개발공부/JAVA
[JAVA] 상속 - super 키워드
jnnjnn
2024. 3. 8. 17:36
부모 생성자 호출
현실에서 부모 없는 자식이 있을 수 없듯이 자바에서도 자식 객체를 생성하면 부모 객체가 먼저 생성된 후에 자식 객체가 생성된다. 객체가 생성될 때 생성자를 호출해야 하기 때문에 자식 객체를 생성할 때에는 부모 생성자와 자식 생성자가 호출된다.
이 말은 자식 클래스의 생성자에 부모 생성자도 포함되어 있다는 뜻이다. 사용자가 생성자를 추가하지 않아도 컴파일러는 자식 생성자에 super()를 추가해준다. super()는 기본 부모 생성자를 호출한다.
만약 부모 클래스에 기본 생성자가 없고 매개변수를 갖는 생성자만 있다면 매개변수를 갖는 super(매개값, ..) 코드를 직접 넣어야 한다. 이 코드는 매개값의 타입과 개수가 일치하는 부모 생성자를 호출한다.
super 키워드
super는 생성자 호출에서만 쓰이는 것이 아닌, 상위 타입의 멤버에 접근할 수 있는 키워드이다.
필드나 메소드 앞에 붙여 사용한다.
public class C01Super {
public static void main(String[] args) {
C01Child child = new C01Child();
child.method1();
}
}
class C01Parent {
public int field;
public void method1() {
System.out.println(field);
System.out.println("부모클래스의 메소드 코드 실행");
}
}
class C01Child extends C01Parent {
public void method1() {
super.method1(); // super : 상위 타입의 멤버(필드, 메소드)를 접근하기 위한 키워드
super.field = 5;
System.out.println(super.field);
System.out.println("자식클래스의 메소드 코드 실행");
}
}