super
: 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수super
를 붙여서 구별▶ Child클래스는 조상인 Parent클래스로부터 x를 상속받는데, 자신의 멤버인 x와 이름이 같아서 super로 구별
▶ x, this.x, super.x 모두 같은 변수를 의미하므로 모두 같은 값 출력
this()
는 같은 클래스의 다른 생성자를 호출하는데 사용되지만, 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) {
this.x = x; //조상의 멤버를 초기화
this.y = y; //조상의 멤버를 초기화
this.z = z;
}
}
:위의 코드에서 Point3D클래스의 생성자가 조상인 Point클래스로부터 상속받은 x,y를 초기화함
(틀린코드는 아니지만, 아래가 더 바람직)
▼생성자 Point3D()를 아래처럼 조상의 멤버는 조상의 생성자를 통해 초기화되로고 작성하는 것이 바람직▼
Point3D(int x, int y, int z) {
super(x, y); //조상클래스의 생성자 Point(int x, int y)를 호출
this.z = z; //자신의 멤버를 초기화
}
🎃 클래스 자신에 선언된 변수는 자신의 생성자가 초기화를 책임지도록 작성
🎃 생성자는 상속되지 않음