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

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

關于java接口的一個疑問

關于java接口的一個疑問

封不羈 2015-08-14 08:14:21
public?interface?TestInterface?{ ????public?void?print(); } public?class?Demo1?{ ????TestInterface?t1?=?new?TestInterface()?{ ???????? ????????@Override ????????public?void?print()?{ ????????????//?TODO?Auto-generated?method?stub ????????????System.out.println("Demo1"); ????????} ????}; ???? ????public?static?void?main(String[]?args)?{ ????????Demo1?d1?=?new?Demo1(); ????????d1.t1.print(); ????} }疑惑是為什么接口可以用new這樣的形式,雖然在new的同時對接口中的方法進行了重載,但還是有些迷惑,對于接口,這種形式的實例化怎么解釋會比較通順,先謝謝回答的人: )
查看完整描述

2 回答

已采納
?
丶小八戒

TA貢獻18條經驗 獲得超7個贊

首先糾正你一下,實現接口的方法叫方法覆蓋,方法名相同參數不同才是方法重載。

接著,你想一下,一個類實現一個接口,只要這個類實現了接口的所有方法,那么這個類就是可以實例化的。

你上面的寫法,內部類已經實現了接口的所有方法(即這里的print()方法),只是沒給這個實現接口的類取個名字而已,所有它可以實例化,通俗點,就是可以new。



查看完整回答
1 反對 回復 2015-08-14
  • 封不羈
    封不羈
    先謝謝你糾正我的一個術語錯誤- -,嗯,之前一直想得表面了,看過抽象類不能用new進行實例化就一直停留在字面意思了,再次謝謝: )
?
時間妖

TA貢獻1條經驗 獲得超1個贊

這種new形式是 匿名內部類,但由于TestInterface是接口,所以這個類與TestInterface接口是implements關系。

這個可以通過在“cmd”下輸入“javap + 生成的'文件名$數字.class'”進行反編譯,這樣能看到一個繼承關系。

查看完整回答
1 反對 回復 2015-08-14
  • 2 回答
  • 0 關注
  • 1760 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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