package tw.tinachang.myfirstproject.game;
class Dad{
public Dad(){
//我是建構子
System.out.println("呼叫Dad");
}
}
class Son extends Dad{
public Son(){
System.out.print("呼叫Son");
}
}
public class GamePolymorphismDetial {
public static void main(String[] args) {
Son ex1 = new Son();
//在呼叫ex1(也就是Son的實體)時,會先進行父類別定義的初始流程,再進行子類別
//所以會先印"呼叫Dad"再印"呼叫Son"
}
}
呼叫Dad
呼叫Son
package tw.xxx.myfirstproject.game;
class Dad{
public Dad(){
//我是建構子
//如果沒有特別寫無參數建構子,而子類別又沒有設定super,那子類別的預設super()會呼叫不到,出現錯誤
System.out.println("呼叫Dad");
}
public Dad(int i){
System.out.println("呼叫Dad"+i);
}
}
class Son extends Dad{
public Son(){
//我也是建構子
super(10);
System.out.print("呼叫Son");
}
}
public class GamePolymorphismDetial {
public static void main(String[] args) {
Son ex1 = new Son();
//注意Son底下的super(10),其實建構子中本來就有預設super()所以才會先呼叫父親建構子再呼叫兒子的
//再new Son()時,先呼叫Son的建構子,裡面預設有的super()於是乎叫了父親的建構子
//這裡因為覆寫了,所以他是呼叫super(10)
}
}
呼叫Dad10
呼叫Son