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

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

新手關(guān)于接口的小問題請(qǐng)教

新手關(guān)于接口的小問題請(qǐng)教

醉里挑燈開車 2017-06-30 11:24:29
interface?A { ????default?String?getName(){return?getClass().getName()?+?"-"?+?hashCode()} } interface?B { ????default?String?getName(){return?getClass().getName()?+?"-"?+?hashCode()} } class?C?implements?A,B { ????public?String?getName(){return?B.super.getName();} }如圖這段代碼,我想問的是類C中調(diào)用B類的getName時(shí)為什么不能直接 ?B.getName( ) ? 而是B.super.getName( )這樣寫豈不是調(diào)用的是B的超類的getName()方法了嗎??是因?yàn)榉庆o態(tài)方法不能直接調(diào)用?可是B類中g(shù)etName方法已經(jīng)重寫了吧,用B類超類中的getName()方法就不一樣了吧??請(qǐng)大神解答一下!
查看完整描述

2 回答

?
四無(wú)小青年

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

這是java8的新特性默認(rèn)方法,默認(rèn)方法允許接口中存在帶方法體的方法且子類可以不用重寫,在加上接口可以多繼承,這就會(huì)出現(xiàn)一個(gè)類繼承多個(gè)接口而多個(gè)接口具有相同的方法簽名這種情況,這會(huì)造成歧義,外部直接調(diào)用子類的默認(rèn)方法時(shí)不能確定是調(diào)用那個(gè)接口的方法。
所以java8規(guī)定如果存在多繼承默認(rèn)方法沖突,子類需要重寫默認(rèn)方法,或者直接調(diào)用更上層的默認(rèn)方法來消除歧義,不然會(huì)編譯出錯(cuò)。這就是你所提的問題了,A和B存在相同方法,所以子類通過調(diào)用B父類的默認(rèn)方法來消除歧義。
若解惑,望采納

查看完整回答
反對(duì) 回復(fù) 2017-07-04
  • 2 回答
  • 0 關(guān)注
  • 1258 瀏覽
慕課專欄
更多

添加回答

舉報(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)