完成課件中的動手動腦的或需要驗證的相關內容。
信1605-3 於丁一 20163578
為什麽子類的構造方法在運行之前,必須調用父類的構造方法?能不能反過來?為什麽不能反過來?
構造函數的主要作用是初始化,因為子類繼承了父類,所以父類有的東西子類也有,所以在子類的構造方法運行之前必須調用父類的構造方法。不能反過來,因為子類繼承父類所以要有個順序來執行,先有父類再有子類,所以不能反過來。
- 請自行編寫代碼測試以下特性(動手動腦):
- 在子類中,若要調用父類中被覆蓋的方法,可以使用super關鍵字。
//信1605-3 於丁一 20163578
package super調用;
class Animal {
public
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
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
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的父類,所以最後結果加一。
完成課件中的動手動腦的或需要驗證的相關內容。