참조변수 super
- 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에만 존재, 즉 static 메서드에는 사용불가
- 조상의 멤버를 자신의 멤버와 구별할 때 사용
class Ex {
public static void main(String args[]) {
Child c = new Child();
c.method();
}
}
class Parent { int x = 10 ; }
class Child extends Parent {
int x = 20;
void method() {
System.out.println(x)
System.out.println(this.x)
System.out.println(super.x)
}
}
- super.x 와 this.x가 같을 수도 있음
class Ex {
public static void main(String args[]) {
Child2 c = new Child2();
c.method();
}
}
class Parent2 { int x = 10 ; }
class Child2 extends Parent2 {
void method() {
System.out.println(x)
System.out.println(this.x)
System.out.println(super.x)
}
}
super()
- 조상의 생성자
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
class Point() {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
class Point3D extends Point {
int z;
Point3D(int x, int y, int z) {
super(x, y);
this.z = z;
}
}
- 모든 생성자의 첫 줄에 반드시 생성자를 호출해야 한다.
- 그렇지 않으면 컴파일러가 생성자의 첫 줄에 super()를 삽입
class Point() {
int x, y;
Point() {
this(0,0);
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
}