super
객체 자신을 가리키는 참조변수로 조상의 멤버를 자신의 멤버와 구분할 때 사용
인스턴스 메소드 혹은 생성자 내에만 존재
this와 마찬가지로 static 메소드(클래스 메소드)에 사용 불가
this는 자손 클래스의 멤버 - super는 조상 클래스의 멤버
class 조상클래스 {
int x = 10; //조상 클래스의 x를 가리키려면 super.x
}
class 자손클래스 extends 조상클래스 {
int x = 20; // 자손 클래스의 x를 가리키려면 this.x
}
class 자손클래스2 extends 조상클래스 {
// 조상 클래스의 멤버를 따로 자손클래스에서 사용하지 않은 경우
// this 와 super 둘다 조상 클래스의 멤버를 가리킴
}
super()
조상의 생성자를 호출할 때 사용
생성자와 초기화블럭은 상속을 받지 못하기 때문에 그런 경우에 조상의 생성자를 호출하려 사용
조상의 멤버를 조상의 생성자를 통해 초기화 하기 위함
this()와 마찬가지로 생성자의 첫줄에 호출해야 함
class Point {
int x, y;
Point(int x, int y) { // 자손 클래스의 super(x, y)는 이 생성자를 호출
this.x = x;
this.y = y;
}
}
class Point3D extends Point {
int z;
Point3D(int x, int y, int z) {
//this.x = x; // 조상으로 부터 상속 받은 x와 y는 this를 통해 자손 클래스가
//this.y = y; // 직접 초기화하면 안되기에
super(x, y); // 조상의 생성자를 통해 초기화
this.z = z; // 자신의 멤버만 초기화
}
}
'Java > Notion' 카테고리의 다른 글
import / static import (0) | 2023.04.24 |
---|---|
패키지 (package) (0) | 2023.04.24 |
오버라이딩 (Overriding) (0) | 2023.04.24 |
상속과 포함 (0) | 2023.04.24 |
Class / Method (0) | 2023.04.24 |