簡體   English   中英

為什么我可以使用父類的類型創建變量

[英]Why can I create an variable with type of parent class

當我有這些課程時:

public class Master{

    public String test(){
        return "I am the master object";
    }

    public String boeh(){
        return "Only inside master";
    }

}

public class Slave extends Master{

    public String test(){
        return "I am the slave object";
    }

    public String mehh(){
        return "Only insde slave";
    }

}

我知道我可以做到這一點: Master jedi = new Slave() (因為Slave是一個兒童類型的Master)。

因為我可以......當變量設置為Master "I am the slave object"為什么我會得到"I am the slave object" 我得到Slave.test()的結果但無法訪問Slave.mehh()。

那么為什么給它一個變量類型的原因是什么呢? 或者換句話說,當Master jedi實際上是Slave jedi時,它有什么功能來宣布Master?

因為繼承的方式有效。 如果從屬設備復制方法(復制test方法的方式),則它的從屬版本始終優先。 你無法訪問mehh的原因是因為它不在Master ,所以程序找不到它。 如果你想使用Master和Slave的所有方法,那么Slave s = new Slave();

這稱為多態(事實上,它是我們使用面向對象編程的主要原因之一)。 它允許您從基本類型變量調用不同的方法(在相同的簽名下),而不事先知道所包含對象的類型。 因此,這允許您擁有更多抽象代碼(代碼不依賴於其部件的確切實現)。

如果希望根據運行時類型(實際類型)動態調度方法,則使用實例方法。 如果希望根據編譯時類型(已分配給它們的變量的類型)靜態調度方法,則可以使用靜態方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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