第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從父類公共成員調(diào)用的子類私有成員

從父類公共成員調(diào)用的子類私有成員

BIG陽(yáng) 2021-11-11 15:37:30
下面的代碼中發(fā)生了什么?請(qǐng)解釋輸出:class Parent{    private void fun(){        System.out.println("parent fun\n");    }    public void accessFun(){        System.out.println(this);        this.fun();    }}class Child extends Parent{    private void fun(){        System.out.println("child fun");    }}class Test{    public static void main(String[] args) {        Child a = new Child();        Parent b = new Parent();        Parent c = new Child();        a.accessFun();        b.accessFun();        c.accessFun();    }}輸出:Child@7960847bparent funParent@3b192d32parent funChild@16f65612parent fun為什么 this.fun() 行沒有給出編譯時(shí)錯(cuò)誤?我認(rèn)為 fun 是 Child 類中的私有成員,因此不能從 Child 類外部(從它的 Parent 類的公共成員)訪問。為什么 this.fun() 會(huì)調(diào)用 fun() 的父類版本?請(qǐng)注意,這是指子類對(duì)象。
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

私有成員不會(huì)被繼承。


我認(rèn)為這可能是您在這里遺漏的關(guān)鍵點(diǎn)。這意味著Child.fun不會(huì)覆蓋Parent.fun. 它們只是兩個(gè)簡(jiǎn)單的舊方法,彼此無關(guān)。


當(dāng)你調(diào)用時(shí)accessFun,控制總是進(jìn)入下面的這段代碼Parent:


public void accessFun(){

    System.out.println(this);

    this.fun(); <---- here

}

現(xiàn)在,因?yàn)槲覀儸F(xiàn)在在里面Parent,我們可以訪問fun. 而且,由于Parent.fun是沒有被覆蓋,它調(diào)用Parent.fun而不是Child.fun。


我認(rèn)為 fun 是子類中的私有成員,因此無法從類外部訪問(甚至可以從其父類的公共成員訪問)。


那是完全的誤解。如果不能從類的外部訪問私有成員,甚至不能通過公共方法訪問,那么它們的用處就會(huì)小得多。為什么首先要擁有它們?


“私有成員只能由在同一類中聲明的成員訪問”可能更好記住。


查看完整回答
反對(duì) 回復(fù) 2021-11-11
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為 fun 是子類中的私有成員,因此無法從類外部訪問(甚至可以從其父類的公共成員訪問)。

有時(shí)一切都來自“外部”。例如,main呼叫來自外部。

如果不能從外部訪問私有成員,則它始終是死代碼,這是沒有意義的。

區(qū)別在于對(duì)直接訪問和間接訪問的理解。

在所有情況下,您都可以通過 method 非直接調(diào)用該方法accessFun()。


查看完整回答
反對(duì) 回復(fù) 2021-11-11
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

parent 中的 fun 方法是私有的,子 fun() 方法不會(huì)覆蓋父 fun() 方法。但是 accessFun 方法是公共的,因此它可以從子類中調(diào)用并且可以公開訪問。

因此,當(dāng)您調(diào)用 accessFun() 方法時(shí),它將調(diào)用父類 fun() 方法。不是子類 fun() 方法,因?yàn)樗撬接械?。這就是為什么你不會(huì)出錯(cuò)的原因。


查看完整回答
反對(duì) 回復(fù) 2021-11-11
  • 3 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)