2023. 2. 28. 17:18ㆍ카테고리 없음
자바에는 this 키워드가 존재합니다.
자바에서 this는인스턴스 자기 자신을 가리키는 키워드입니다.
this를 통해 클래스 메소드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있습니다.
<this로 현제 객체 나타내기>
메소드나 생성자에서 this는 현재 객체를 나타냅니다.
this를 사용하여 현재 객체의 어떠한 멤버도 참조할 수 있습니다.
또 this() 형식으로 this 뒤에 ()를 붙이면 생성자 호출이 됩니다.
메소드 내부에서는 필드에 직접 접근할 수 있습니다.
point() 안에서는 아래와 같이 x와 y를 직접 사용할 수 있습니다.
public class point {
private int x = -;
private int y = 0;
//생성자
public point(int a, int b){// 여기
x = a;
y = b;
}}
this를 사용하여서도 작성을 할 수 있습니다.
여기서 this는 point()가 호출된 객체 (현재객체)를 나타냅니다.
public point(int a, int b) {
this.x = a;
this = b;
}
하지만 위 코드 같은 경우에는 this를 사용할 필요가 없습니다.
문장의 길이가 증가하였을 뿐 장점이 없기 때문입니다.
this를 사용하면 편리해지는 경우가 있습니다.
자바에서 매개 변수와 필드가 이름이 같으면 매개 변수가 필드를 가리게 됩니다.
이 경우에 this를 사용하면 필드를 참조할 수 있습니다.
point의 생성자를 다시 작성해 보겠습니다.
public class point {
private int x = 0;
private int y = 0;
//생성자
publuc point(int x, int y){
this.x = x;
this.y = y;
}}
생성자의 매개 변수와 필드의 이름이 동일하기 때문에 this를 사용하여 구별하였습니다.
즉 생성자 안에서의 x는 매개 변수입니다.
하지만 this.x는 필드가 x가 됩니다.
이 경우에는 매개변수 이름이 필드 이름과 같아도 됩니다.
<this로 생성자 호출하기>
하나의 클래스 안에서 생성자는 여러 개 작성될 수 있습니다.
생성자의 매개 변수만 다르다면 말이죠!!
생성자 안에서는 this()를 사용하여 다른 생성자를 호출할 수 있는데요 이것은 명시적인 생성자 호출이라고 불립니다.
<여러 개의 생성자를 가지는 Rectangle 클래스>
public class Rectangle {
private int x,y;
private int wudth, heught;
Rectangle() {
this(0,0,1,1);
}
Rectangle(int width, int height) {
this(0,0,width,height);
}
Rectangle(int x, int y, iny width, int height){
this.x = x;
this.y = y;
this.width;
this.height;
}
}
이 클래스는 여러 개의 생성자를 가지고 있습니다.
각 생성자는 Rectangle 객체 필드를 초기화합니다.
생성자는 초기값이 주어지지 않은 멤버 변수에 대해서는 디폴트 값을 부여하는 것이 좋습니다.
예를 들어 인수가 없는 생성자는 x=0; y =0, width=1, height=1과 같이 설정하기 위해서는 다른 생성자를 호출합니다.
this()를 사용한 다른 생성자 호출은 항상 첫 번째 문자입니다.