참조변수 super
객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에만 존재
조상의 멤버를 자신의 멤버와 구별할 때 사용
x가 중복 : 조상의 멤버 = super.x / 자신의 멤버 = this.x
x가 중복이 아님 : 조상의 멤버 = super.x 이면서 this.x
super() - 조상의 생성자
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
자손의 생성자는 조상의 멤버를 초기화 못함! ➔ 조상 클래스의 생성자를 호출해야 함
super() - 조상의 생성자의 조건
모든 생성자는 첫 줄에 반드시 다른 생성자를 호출해야 함
그렇지 않으면 컴파일러가 생성자의 첫 줄에 super();를 삽입함 (조상의 기본 생성자 호출)
< 예제 1 >
< 예제 2 >
- 첫번째 super() : point의 조상인 Object를 호출하는 것
- 두번째 super() : point3D의 조상인 point를 호출하는 것
발생하는 문제 : point 클래스의 기본생성자 point(){} 가 없음
이유 : 이미 생성자가 하나 있기때문에 기본 생성자가 자동으로 안생김
해결책 : 기본생성자 추가 OR super(x, y);로 바꿔서 조상의 생성자 point (int x, int y)를 호출