1. 程式人生 > >完成課件中的動手動腦的或需要驗證的相關內容。

完成課件中的動手動腦的或需要驗證的相關內容。

初始化 out animal 測試 logs src cnblogs clas tro

信1605-3 於丁一 20163578

為什麽子類的構造方法在運行之前,必須調用父類的構造方法?能不能反過來?為什麽不能反過來?

構造函數的主要作用是初始化,因為子類繼承了父類,所以父類有的東西子類也有,所以在子類的構造方法運行之前必須調用父類的構造方法。不能反過來,因為子類繼承父類所以要有個順序來執行,先有父類再有子類,所以不能反過來。

  • 請自行編寫代碼測試以下特性(動手動腦):
    • 在子類中,若要調用父類中被覆蓋的方法,可以使用super關鍵字

//信1605-3 於丁一 20163578

package super調用;

class Animal {

public

int age=10;

public String name;

public void eat(){

System.out.println("有吃東西的能力");

}

public Animal(int age){

this.age=age;

System.out.println("構造方法執行了");

}

}

class Dog extends Animal{

public int age=20;

public

void eat(){

System.out.println("狗有吃骨頭的能力");

}

public Dog(int age){

super(age);

System.out.println("Dog構造方法執行了");

}

}

public class Test {

public static void main(String[] args){

Animal a=new

Animal(10);

a.eat();

Dog b=new Dog(20);

b.eat();

}

結果截圖:

技術分享

  • 運行以下測試代碼

技術分享

回答問題:

1. 左邊的程序運行結果是什麽?

2. 你如何解釋會得到這樣的輸出?

3. 計算機是不會出錯的,之所以得

到這樣的運行結果也是有原因的,

那麽從這些運行結果中,你能總

結出Java的哪些語法特性?

請務必動腦總結,然後修改或編寫一些代碼進行測試,驗證自己的想法,最後再看 後面的PPT給出的結論

運行前的結果猜想:

100

200

200

201(錯誤)

201

實驗結果截圖:

技術分享

解釋:前兩個結果就是正常輸出,第三個將child復制給parent,因為parent是父類,child是子類。所以第四個單純的parent.myValue++無法實現加一的目的,而第五個體現了parent是child的父類,所以最後結果加一。

完成課件中的動手動腦的或需要驗證的相關內容。