[Java] 생성자와 super( ) [2]

// 클래스 상속과 super( ) 
public class Pg40 {
Pg40(){

}
public static void main(String args[]) {
//Mom m1 = new Mom("ys");
//Mom2 m2 = new Mom2();
//Son s1 = new Son();
//Son2 s2 = new Son2();
Son_of_Son2 s2 = new Son_of_Son2();
}
}
class Grandmother{
public Grandmother(String name) {
System.out.println(name+"!");
System.out.printf("Grandmother instance\n");
}
}
class Mom extends Grandmother{
public Mom(String name) {
super(name);
System.out.printf("Mom instance\n");

}
}
class Mom2 extends Grandmother{
public Mom2() {
super("mom2");
System.out.printf("Mom2 instance\n");
}
}
class Son extends Mom{
public Son() {
super("son");
System.out.printf("Son instance\n");
}
}
class Son2 extends Mom2{
public Son2() {
super();
System.out.printf("Son2 instance\n");
}
}
class Son_of_Son2 extends Son2{
public Son_of_Son2() {System.out.printf("Son_of_Son2 instance\n");};
}


====================Manual=======================
Grandmother     <- Mom      <- Son
                              <- Mom2    <-Son2

super( ) 는 컴파일러에 의해 자동으로 호출되지만, 만약 상속클래스의 생성자가 매개변수를 포함하는 경우 피 상속플래스는 생성자에서 super( 매개변수 ) 를 포함해야 한다. 

댓글