충분히 쌓여가는
7.3 부모 생성자 호출 - super() 본문
현실에서 부모 없는 자식이 있을 수 없듯이
자바에서도 자식 객체를 생성하면 부모 객체가 먼저 생성된 다음에 자식 객체가 생성된다
모든 객체는 생성자를 호출해야 한다
부모 객체도 예외는 아니다, 그렇다면 부모 객체의 생성자는 어디서 호출된 것일까?
부모 생성자는 자식 생성자의 맨 첫 줄에 숨겨져 있는 super()에 의해 호출된다
//자식 생성자 선언
pulbic 자식 클래스(...) {
super();
...
}
super()은 컴파일 과정에서 자동 추가되는데, 부모의 기본 생성자를 호출한다
만약 부모 클래스에 기본 생성자가 없다면 자식 생성자 선언에서 컴파일 에러가 발생한다
!부모 클래스에 기본 생성자가 없고 매개변수를 갖는 생성자만 있다면
super(매개값, ...) 코드를 직접 넣어야 한다
//자식 생성자 선언
pulbic 자식 클래스(...) {
super(매개값, ...);
...
}
부모 클래스가 기본 생성자를 가지고 있는 경우
package ch07.sec03.exam01;
public class Phone {
public String model;
public String color;
//기본 생성자 선언
public Phone() {
}
}
package ch07.sec03.exam01;
public class SmartPhone extends Phone {
public SmartPhone(String model, String color) {
super(); //생략가능
this.model = model;
this.color = color;
}
}
부모 클래스가 매개변수를 갖는 생성자가 있는 경우
package ch07.sec03.exam02;
public class Phone {
public String model;
public String color;
//기본 생성자 선언
public Phone(String model, String color) {
this.model = model;
this.color = color;
}
}
package ch07.sec03.exam02;
public class SmartPhone extends Phone {
public SmartPhone(String model, String color) {
super(model, color); //무조건 생성해야 함
this.model = model;
this.color = color;
}
}
'이것이 자바다 > 07 상속' 카테고리의 다른 글
7.5 final 클래스와 final 메소드 (0) | 2024.04.02 |
---|---|
7.5 부모 메소드 호출 - super. (0) | 2024.04.02 |
7.4 메소드 재정의 - 오버라이딩 (0) | 2024.04.02 |
7.2 클래스 상속 (0) | 2024.04.02 |
이것이 자바다 7장 확인 문제 (0) | 2024.02.03 |