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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

接口為什么只能有常量不能有變量?

背景:接口中只有常量,不能存在變量

代碼:

public?interface?A{
????int?i=10;
????void?f();
????}

問(wèn)題:以上代碼中i默認(rèn)是public static final。請(qǐng)問(wèn)一下實(shí)現(xiàn)接口的過(guò)程中,是否與繼承一樣是在本對(duì)象的堆空間中開辟一塊給父類實(shí)例域存放值,如果是這樣子的話我認(rèn)為接口中是可以存在變量的。接口規(guī)定方法名不規(guī)定實(shí)現(xiàn),引申就是規(guī)定變量名不規(guī)定具體值,這樣思考不對(duì)嗎?

PS:請(qǐng)回答大神不要用現(xiàn)狀/規(guī)定來(lái)反推一定要是這樣,在下還是想好好理解一下OOP的設(shè)計(jì)思路,感謝

正在回答

3 回答

為什么抽象類可以有變量?

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

weixin_慕的地3225568

因?yàn)槌橄箢愂穷?,被繼承是extends,而Java是單繼承,不會(huì)造成混亂,所以可以有變量
2020-02-17 回復(fù) 有任何疑惑可以回復(fù)我~

咦,自己查資料發(fā)現(xiàn)原因如下:

  1. 首先接口由于少了方法的實(shí)現(xiàn),所以不能實(shí)例化,這個(gè)與抽象類一致,

  2. 由于不能實(shí)例化,所以對(duì)于成員變量只能是static

  3. 由于是static所以所有實(shí)現(xiàn)了接口的類共享一份

  4. 由于所有人共享一份,同時(shí)接口的定義是“所有實(shí)現(xiàn)該接口的人都共同擁有這些屬性/功能”

  5. 由于所有的實(shí)現(xiàn)類都共同擁有,若是變量則實(shí)現(xiàn)類A的改變會(huì)導(dǎo)致實(shí)現(xiàn)B的改變

  6. 會(huì)由于實(shí)現(xiàn)類的操作而改變的東西違反了接口的定義

  7. 所以為了確保每個(gè)實(shí)現(xiàn)的接口都共同遵守這個(gè)“屬性”,屬性必須是final

  8. 由于接口本身的定義是public

  9. 最后就是 public static final xxx

3 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Antique 提問(wèn)者

簡(jiǎn)單說(shuō)還是為了保持一個(gè)“大家都一樣”的特性
2017-09-21 回復(fù) 有任何疑惑可以回復(fù)我~

甲魚的臀部——龜腚

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java入門第二季 升級(jí)版
  • 參與學(xué)習(xí)       531098    人
  • 解答問(wèn)題       6280    個(gè)

課程升級(jí)!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會(huì)Java面向?qū)ο缶幊痰膴W妙

進(jìn)入課程

接口為什么只能有常量不能有變量?

我要回答 關(guān)注問(wèn)題
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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