Java的子类可以继承父类的私有变量和私有方法吗?
答:實(shí)際上繼承了。
父類(lèi)的成員變量(包含私有變量)和成員方法地址(包含私有成員方法)都存放在子類(lèi)對(duì)象中。父類(lèi)的私有變量和私有方法雖然在子類(lèi)對(duì)象中,但是對(duì)于子類(lèi)對(duì)象而言是不可見(jiàn)的,無(wú)法直接訪問(wèn)和調(diào)用,必須通過(guò)父類(lèi)的成員方法(或者父類(lèi)的構(gòu)造方法)才能訪問(wèn)和調(diào)用,正是因?yàn)檫@樣的特性,所以 Java 官方文檔將其描述為不可以被子類(lèi)繼承,但是從內(nèi)存數(shù)據(jù)來(lái)看,父類(lèi)的私有且非靜態(tài)的數(shù)據(jù)的確在子類(lèi)的對(duì)象中。
從內(nèi)存圖來(lái)看,子類(lèi)對(duì)象根據(jù)繼承的層級(jí)劃分多個(gè)區(qū)塊,本類(lèi)資源區(qū)、父類(lèi)資源區(qū)、祖父類(lèi)資源區(qū)等等,從父類(lèi)繼承下來(lái)的私有變量和私有方法,都存儲(chǔ)在子類(lèi)對(duì)象中的各自資源區(qū)內(nèi),只是 private 的數(shù)據(jù),子類(lèi)對(duì)象無(wú)法直接操作罷了。
注:父類(lèi)的成員方法沒(méi)有被子類(lèi)覆蓋重寫(xiě),則該方法會(huì)被繼承到子類(lèi)中,父類(lèi)私有方法無(wú)法被子類(lèi)覆蓋重寫(xiě),肯定被子類(lèi)繼承。
總結(jié)
以上是生活随笔為你收集整理的Java的子类可以继承父类的私有变量和私有方法吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 北京银行异地跨行转账可以吗?
- 下一篇: Java中父类的私有数据和静态数据在内存