簡體   English   中英

了解Java基類和派生類

[英]Understanding the Java Base class and Derived Class

我在互聯網上搜索以了解基類和派生類的概念。 我有一個問題,派生類是否包含基類的所有變量和方法,或者派生類僅引用基類的變量和方法。

當我從基類擴展一個類並創建派生類的對象時,派生類對象是否充當包含基類對象+自己的變量和方法的容器? 基類對象是內聯復制的嗎? 當我調用超類方法super.setValues(10,20)時,它是否調用超類,設置值並內聯復制這些值?

我對代碼的內部運作感到困惑嗎? 有人可以解釋一下嗎?

謝謝高麗

據我所知,進入最低層時,當您以靜態類型的語言實例化派生類時,它會存儲在內存中,而父類與子類在內存中是分隔的。 當您訪問實例時,根據您檢索實例的類型,它將訪問與實例的整個存儲區或僅存儲器的基本部分相同的存儲區。 但是,如果基類方法在派生類中被覆蓋,則它們將指向派生類。

這不是一個好的答案,而是在OOP環境中工作時如何將其保留在我的內存中。

無論如何,有很多關於該主題的文獻可以比我在SO答案中幫助您更好地闡明OOP。

當擴展一個類時,派生類實際上繼承了基類的方法,派生類對象包含派生類和超類的所有方法和變量,但是如果任何方法被覆蓋,則派生類對象就是被覆蓋的方法。 這意味着優先級最高的是派生類,如果編譯器沒有在派生類中找到該方法,則它將檢查基類。

super.setValues(10,20)因為使用了super關鍵字而調用了超類方法。如果不使用super關鍵字使用它,那么它將首先檢入派生類。

暫無
暫無

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

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