728x90

참조 변수 Super

super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는 데 사용되는 참조 변수이다.

상속받은 멤버와 자신의 멤버와 이름이 같을 때는 super를 붙여서 구별할 수 있다.

Super() 조상의 생성자 쓰기

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()를 아래처럼 조상의 멤버는 조상의 생성자를 통해 초기화되도록 작성하는 것이 바람직하다.

Point3D(int x, int y, int z) {
	super(x, y);  // 조상클래스의 생성자 Point(int x, int y)를 호출
	this.z = z;   // 자신의 멤버를 초기화
}

 

반응형
코드플리