[英]Java classes, inherited constructor with new
以下幾行是什么意思?
superclass sc = new subclass();
subclass sc = new superclass();
我在計算機科學書中看到的第一行已經實現,我不知道這意味着什么。 超級類如何使新的子類構造函數失效? 第二行它甚至如何工作? 我以為子類不繼承超類構造函數?
OOP的新手,感到困惑。
容易-第二行不編譯。 (提示:將其寫出來,下次再試。)
第一行很有意義。 也許以此方式閱讀會有所幫助?
superclass sup;
subclass sub = new subclass();
sup = sub;
在任何情況下,請注意,你只是普通的舊作一個子類。 然后,您可以保留對超類的引用,因為子類是超類的實例。
注意,這與構造函數繼承無關 。 構造函數永遠不會被繼承。
也許一個例子可以幫助您。 以這種方式思考您的兩行:
//Student extends Person
Person p = new Student();
Student s = new Person();
您很容易注意到第一行是正確的,如果Student 是 Person 。 但是,並非所有人都是學生 ,因此這就是第二行錯誤的原因。
正確,第二行將給出編譯錯誤。
在第一行中,超類保留子類的實例。 在這里我們可以看到“ IS a”關系。 例如
class Animal {}
class Dog extends Animal {}
class TestCode {
public static void main(String[] args) {
Animal a=new Dog(); // here a contains the instance of Dog
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.