super
- 자식클래스가 부모클래스로부터 상속받은 멤버를 참조할 때 사용하는 참조 변수이다.
- 클래스 내의 멤버변수와 지역변수의 이름이 같을 경우 구분을 위해 this를 사용하듯
- 부모클래스와 자식클래스의 멤버가 이름이 같을 경우 super를 사용한다.
class Parent {
int a = 100;
}
class Child extends Parent {
int a = 200;
void display() {
System.out.println(a); // 200
System.out.println(this.a); // 200
System.out.println(super.a); // 100
}
}
public class Main {
public static void main(String[] args) {
Child ch = new Child();
ch.display();
}
}
// 지역변수와 this참조변수는 자식클래스에서 대입된 값을 출력하며,
// super참조변수는 부모클래스에서 대입된 값을 출력한다.
super()
- this() 메소드가 같은 클래스의 다른 생성자를 호출할 때 사용된다면,
- super() 메소드는 부모클래스의 생성자를 호출할 때 사용된다.
class Parent {
int a ;
Parent(int n) {
a = n;
}
}
class Child extends Parent {
Child(int n) {
super(n);
}
void display() {
System.out.println(a); // 100
}
}
public class Main {
public static void main(String[] args) {
Child ch = new Child(100);
ch.display();
}
}
상속에 대한 글을 쓰면서 super()를 써본 적이 있다.
상속 시 부모의 생성자는 상속받지 않는다 해서
부모 생성자에 매개변수가 있으면 어떻게 되는지 궁금해서 찾아봤었다.
[Java] 상속과 Object 클래스
'Java' 카테고리의 다른 글
[Java] 추상 메소드를 포함하는 추상 클래스 (0) | 2022.09.12 |
---|---|
[Java] 다형성, 업캐스팅과 다운캐스팅, instanceof (0) | 2022.09.12 |
[Java] 오버로딩 & 오버라이딩 (0) | 2022.09.10 |
[Java] 클래스 상속관계와 포함관계 차이 (0) | 2022.09.09 |
[Java] 상속과 Object 클래스 (0) | 2022.09.09 |