class Car2 {
String color;
String gearType;
int door;
Car2() {
// Car2(String color, String gearType, int door)를 호출
this("white", "auto", 4);
}
Car2(String color) {
this(color, "auto", 4);
}
Car2(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
Car(String color) {
door = 5;
this(color, "auto", 4); // Error
}
class Car {
String color;
String gearType;
int door;
Car() {
color = "white";
gearType = "auto";
door = 4;
}
Car(String c, String g, int d) {
this.color = c;
this.gearType = g;
this.door = d;
}
}
Car() {
// Car("white", "auto", 4); 면 에러
// 생성자 안에서 다른 생성자 호출하려먼 this
this("white", "auto", 4);
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
참조변수.변수이름
으로 사용해야 하나 같은 class라 this
를 생략한다. Car2(String c, String g, int d) {
color = c; // this.color 이나 this 생략
gearType = g;
door = d;
}
Car(String color, String gearType, int door) {
this.color = color; // this 생략 불가
this.gearType = gearType;
this.door = door;
}
this : 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다.
this(), this(매개변수) : 생성자
this와 this()는 비슷하게 생겼을 뿐 완전히 다른 것이다.
클래스 메서드 static에서는 this 사용 불가
class MyMAth2 {
long a, b;
MyMath2(int a, int b) { // 생성자
this.a = a; // 생략 불가
this.b = b;
}
long add() { // 인스턴스 메서드
// this가 없어도 a와 b가 구분되기에 생략 가능
return a + b; // return this.a + this.b
}
static long add(long a, long b) { // 클래스 메서드(static 메서드)
// static 메서드의 경우 객체 생성이 되지 않아도 메서드를 호출할 수 있음 -> 객체 있음을 보장할 수 없음
// this : 객체 자신
return a + b; // this를 붙일 수 없다.
}
}