Parent 클래스를 상속받아 Child 클래스를 작성하였습니다. ChildExample 클래스를 실행 했을 때 호출되는 각 클래스의 생성자의 순서를 나타내보겠습니다.
ChildExample
package exInhalitance;
public class ChildExample {
public static void main(String[] args) {
Child child = new Child();
}
}
1. Child 객체를 생성하고 child 변수에 대입
2. 매개변수가 없는 Child() 메서드로 이동
3. this 생성자 - 현재 객체가 갖는 다른 생성자를 호출. 첫줄에만 사용이 가능
4. 다른 생성자가 호출되기 때문에 this.name 이 있는 Child(String name)으로 이동
생성자가 보이지 않기때문에 자동으로 super(); 의 메서드가 포함되있는 것을 알 수 으며 상위클래스로 이동
5. public Parent() 메서드로 이동하여 this("대한민국") 의 생성자를 만나게 되며 앞서 설명한 this생성자의 특성으로 다른 생성자로 이동
6. Parent (String nation) 으로 이동. 메서드안에 생성자가 보이지 않으므로 super() 가 자동으로 포함되있는 것을 알 수 있으며 최상위인 Java.lang.object 패키지를 호출하게 된다.
Child
package exInhalitance;
public class Child extends Parent {
private String name;
public Child() { //2
this("홍길동"); //3
System.out.println("Child() call");
}
public Child(String name) { //4 5
this.name = name;
System.out.println("Child(String name) call");
}
}
Parent
package exInhalitance;
public class Parent {
public String nation;
public Parent() { //5
this("대한민국"); //생성자
System.out.println("Parent() call");
}
public Parent(String nation) { //6
this.nation = nation;
System.out.println("Parent(String nation) call");
}
}
'java' 카테고리의 다른 글
java_9_ 타입 변환 & 강제 타입 변환(Casting) (0) | 2021.10.20 |
---|---|
java_9_ 다형성과 Overriding (0) | 2021.10.20 |
java_8_ 상속 ( super와 this & 오버라이딩 ) (0) | 2021.10.19 |
java_7_ 상속(Inheritance) & 다형성 (0) | 2021.10.18 |
java_7_싱글톤 (0) | 2021.10.18 |