객체 자신에 대한 레퍼런스
-컴파일러에 의해 자동 관리, 개발자는 사용하기만 하면 됨
-this.멤버 형태로 멤버를 접근 할 때 사용
<this 사용 전>
public class Circle {
int radius;
public Circle() {
radius = 1;
}
public Circle(int r) {
radius = r;
}
double getArea() {
return 3.14*radius*radius;
}
...
}
<this 사용 후>
public class Circle {
int radius;
public Circle() {
this.radius = 1;
}
public Circle(int radius) {
this.radius = radius;
}
double getArea() {
return 3.14*this.radius*this.radius;
}
...
}
<this를 이용한 기본 값 수정>
public class Circle {
int radius;
public Circle(int radius) {
this.radius = radius;
}
void set(int radius) {
this.radius = radius;
}
void print() {
System.out.println(radius);
}
public static void main(String args[]) {
Circle ob1 = new Circle(1); // ob1의 radius = 1;
Circle ob2 = new Circle(2); // ob2의 radius = 2;
Circle ob3 = new Circle(3); // ob3의 radius = 3;
ob1.set(4); // ob1의 radius = 4;
ob2.set(5); // ob2의 radius = 5;
ob3.set(6); // ob3의 radius = 6;
ob1.output(); // 4
ob2.output(); // 5
ob3.output(); // 6
}
}
같은 클래스의 다른 생성자 호출
public class Book {
String title;
String author;
void show() {
System.out.println(title + " " + author);
}
public Book() {
this("무제", "지은이 없음");
System.out.println("생성자 호출됨");
}
public Book(String title) {
this(title, "작자미상");
}
public Book(String title, String author) {
this.title = title;
this.author = author;
}
public static void main(String[] args) {
Book littlePrince = new Book("어린왕자", "생텍쥐페리");
Book loveStory = new Book("춘향전");
Book emptyBook = new Book();
littlePrince.show();
loveStory.show();
emptyBook.show();
}
}
생성자 호출됨
어린왕자 생텍쥐베리
춘향전 작자미상
무제 내용없음