JAVA/자바의 정석

[자바의 정석 - 기초편] 7. (3) 참조변수 super / 생성자 super()

서영22 2023. 11. 29. 19:56

 참조변수 super 

객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에만 존재

 

조상의 멤버를 자신의 멤버와 구별할 때 사용

 

x가 중복 : 조상의 멤버 = super.x /  자신의 멤버 = this.x

 

 

x가 중복이 아님 : 조상의 멤버 = super.x 이면서 this.x

 

 

 

 super() - 조상의 생성자 

- 조상의 생성자를 호출할 때 사용

 

- 조상의 멤버는 조상의 생성자를 호출해서 초기화

 

 

자손의 생성자는 조상의 멤버를 초기화 못함! ➔ 조상 클래스의 생성자를 호출해야 함

 

 

 

super() - 조상의 생성자의 조건

 

모든 생성자는 첫 줄에 반드시 다른 생성자를 호출해야 함

 

그렇지 않으면 컴파일러가 생성자의 첫 줄에 super();를 삽입함 (조상의 기본 생성자 호출)

 

 

 

< 예제 1 >

 

 

 

< 예제 2 >

 

문제 : point 클래스의 기본생성자 point(){} 가 없음

 

- 첫번째 super() : point의 조상인 Object를 호출하는 것

 

- 두번째 super() : point3D의 조상인 point를 호출하는 것

 

 

발생하는 문제 : point 클래스의 기본생성자 point(){} 가 없음

                          이유 : 이미 생성자가 하나 있기때문에 기본 생성자가 자동으로 안생김

 

해결책 : 기본생성자 추가  OR  super(x, y);로 바꿔서 조상의 생성자 point (int x, int y)를 호출