close

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

arrow
arrow
    全站熱搜

    乙方 發表在 痞客邦 留言(0) 人氣()