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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

子類為什么可以訪問父類的私有方法

子類為什么可以訪問父類的私有方法

牛魔王的故事 2019-03-21 18:15:08
class PrivateOverride {    private void f() {        System.out.println("private f()");    }    public void hello(){        this.f();        this.bar();    }    protected void bar(){        System.out.print("pri bar");    }}class Derived extends PrivateOverride {    public void f() {        System.out.println("public f()");    }    public void bar(){        System.out.print("deri bar");    }}class Test4{    public static void main(String[] args) {        Derived po = new Derived();        po.hello();    }}輸出: private f()deri bar為什么呢
查看完整描述

5 回答

?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

  1. 首先這里并非直接調(diào)用privatef()方法,就像getter方法能拿到private實例變量一樣,這個無需解釋。

  2. 這里有個繼承的問題: Derived類里的f方法并非是其父類PrivateOverride f方法的重寫, 因為重寫方法要求重寫后方法的訪問權(quán)限修飾符不能比父類更嚴格,在hello方法里執(zhí)行this.f(),編譯器優(yōu)先找最近的f(即父類的f),所以打出了private f()
    當然,在實際開發(fā)中,要盡量避免這種混淆,做做基礎(chǔ)面試題還可以。


查看完整回答
反對 回復 2019-04-24
?
弒天下

TA貢獻1818條經(jīng)驗 獲得超8個贊

你是通過公有的方法去訪問私有的方法,這是可以的


查看完整回答
反對 回復 2019-04-24
?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

public void hello() 是公有方法
它是允許調(diào)用本類的私有方法

查看完整回答
反對 回復 2019-04-24
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

Private方法對于子類是不可見的,所以在子類中名叫f的方法只是恰好命名了同樣的名字,所以在運行時會打印父類中的f以及子類中重寫了的bar


查看完整回答
反對 回復 2019-04-24
  • 5 回答
  • 0 關(guān)注
  • 1333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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