亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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

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

代碼:

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

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

PS:請回答大神不要用現狀/規定來反推一定要是這樣,在下還是想好好理解一下OOP的設計思路,感謝

正在回答

3 回答

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

0 回復 有任何疑惑可以回復我~
#1

weixin_慕的地3225568

因為抽象類是類,被繼承是extends,而Java是單繼承,不會造成混亂,所以可以有變量
2020-02-17 回復 有任何疑惑可以回復我~

咦,自己查資料發現原因如下:

  1. 首先接口由于少了方法的實現,所以不能實例化,這個與抽象類一致,

  2. 由于不能實例化,所以對于成員變量只能是static

  3. 由于是static所以所有實現了接口的類共享一份

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

  5. 由于所有的實現類都共同擁有,若是變量則實現類A的改變會導致實現B的改變

  6. 會由于實現類的操作而改變的東西違反了接口的定義

  7. 所以為了確保每個實現的接口都共同遵守這個“屬性”,屬性必須是final

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

  9. 最后就是 public static final xxx

3 回復 有任何疑惑可以回復我~
#1

Antique 提問者

簡單說還是為了保持一個“大家都一樣”的特性
2017-09-21 回復 有任何疑惑可以回復我~

甲魚的臀部——龜腚

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

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

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號