728x90
반응형
super
super 키워드를 사용하면 SubClass(자식클래스)에서 SuperClass(부모클래스)의 멤버 및 메서드에 접근할 수 있다.
상속을 받았으니 당연히 super 키워드 없이도 사용이 가능하지만 this 키워드처럼 활용할 수 있다.
따라서 아래 코드처럼 부모클래스의 멤버에 접근하는 것이 가능하다.
class A {
int a;
}
class B extends A {
int a, b;
B (int a, int b) {
this.a = a + super.a;
this.b = b;
}
}
SuperClass 생성자
SubClass 객체를 생성하면 SuperClass의 생성자가 먼저 호출되고 SubClass의 생성자가 호출된다.
이는 아래의 코드를 통해서 확인할 수 있다.
class SuperClass {
public SuperClass() {
System.out.println("슈퍼클래스 생성자 호출");
}
}
class SubClass extends SuperClass {
public SubClass() {
System.out.println("서브클래스 생성자 호출");
}
}
그러나 만약 SuperClass에 기본생성자(매개변수가 없는 생성자)가 없다면 SubClass의 멤버는 초기화되지 않은 채로
남아버리기 때문에 이때에는 SubClass에서 명시적으로 SuperClass 생성자를 호출해주어야 한다.
class SuperClass {
int a;
SuperClass(int a) {
this.a = a;
}
}
class SubClass extends SuperClass {
int b;
SubClass(int a, int b) {
super(a);
this.b = b;
}
}
728x90
반응형
'Java > Java 문법' 카테고리의 다른 글
[Java] final (0) | 2024.10.11 |
---|---|
[Java] 추상 클래스, 추상 메서드 (abstract) (0) | 2024.10.03 |
[Java] 업캐스팅 (UpCasting), 다운캐스팅 (DownCasting) (0) | 2024.10.01 |
[Java] 오버라이딩 (Overriding) (0) | 2024.10.01 |
[Java] 상속 (Inheritance), extends (0) | 2024.10.01 |