참조변수 super
- 참조변수 this와 유사하다. (this : lv, iv 구별할 때 쓰임)
- 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재
- 조상의 멤버를 자신의 멤버와 구별할 때 사용
public class EX7_3 {
public static void main(String[] args) {
Child child = new Child();
child.method();
}
}
class Parent{
int x = 10;
}
class Child extends Parent{
int x = 20;
void method(){
System.out.println("x= " + x);
System.out.println("this.x= " + this.x);
System.out.println("super.x= " + super.x);
}
}
super() : 조상의 생성자
- this()와 유사함
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
class MyPoint{
int x, y;
MyPoint(int x, int y){
this.x = x;
this.y = y;
}
}
class MyPoint3D extends MyPoint{
int z;
MyPoint3D(int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
- 올바르게 바꾼 모습(
super()
를 적용한 모습)
class MyPoint{
int x, y;
MyPoint(int x, int y){
this.x = x;
this.y = y;
}
}
class MyPoint3D extends MyPoint{
int z;
MyPoint3D(int x, int y, int z){
super(x, y);
this.z = z;
}
}
- 생성자의 첫 줄에 반드시 생성자를 호출해야 한다. 그렇지 않으면 컴파일러가 생성자의 첫 줄에
super();
를 삽입한다.