개발/JAVA
상속 관계의 초기화 과정
코린이딱콩
2022. 8. 30. 00:48
💡생성자 호출
✔️상속 관계에서 자식 클래스를 인스턴스화 하면 부모 클래스의 객체도 인스턴스 화가 진행됩니다.
✔️자식 클래스의 객체가 인스턴스화 되기 위해서는 먼저 부모 클래스의 객체가 인스턴스화 되어야 합니다.
따라서, 상속 구조에서 가장 상위의 부모 클래스부터 차례로 인스턴스화가 진행됩니다.
💡Art 클래스
public class Art {
public Art() {
System.out.println("Art Constructor");
}
}
💡💡Art 클래스를 상속 받은 Drawing 클래스
public class Drawing extends Art {
public Drawing() {
System.out.println("Drawing Constructor");
}
}
💡💡💡Drawing 클래스를 상속받은 Cartoon 클래스
public class Cartoon extends Drawing {
public Cartoon() {
System.out.println("Cartoon Constructor");
}
}
💡💡💡💡실행 결과
public class InheritanceAssist {
public static void main(String[] args) {
Cartoon cartoon = new Cartoon();
}
}
//실행 결과
Art Constructor
Drawing Constructor
Cartoon Constructor
super()
✔️super() 생성자는 자식 클래스에서 명시적으로 부모 클래스의 생성자를 호출할 수 있도록 하는 방법입니다.
✔️상속 관계에서 부모 클래스의 생성자 호출을 외부에서 명시적으로 지정할 수 없습니다.
✔️자바는 자식 클래스의 객체가 인스턴스화 될 때 기본적으로 부모 클래스의 디폴트 생성자를 호출합니다.
✔️부모 클래스에 디폴트 생성자가 정의되어 있지 않으면 자식클래스는 명시적으로 부모 클래스의 생성자를 호출해야 합니다.
public class Employee {
private String name;
public Employee(String name) {
this.name = name;
}
}
public class Developer extends Employee {
private double salary;
public Developer(String name) {
super(name);
}
public void setSalary(double salary){
this.salary = salary;
}
public double getSalary() {
return salary;
}
}