簡體   English   中英

Java類,繼承了新的構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM