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條經(jīng)驗 獲得超7個贊
首先糾正你一下,實現(xiàn)接口的方法叫方法覆蓋,方法名相同參數(shù)不同才是方法重載。
接著,你想一下,一個類實現(xiàn)一個接口,只要這個類實現(xiàn)了接口的所有方法,那么這個類就是可以實例化的。
你上面的寫法,內(nèi)部類已經(jīng)實現(xiàn)了接口的所有方法(即這里的print()方法),只是沒給這個實現(xiàn)接口的類取個名字而已,所有它可以實例化,通俗點,就是可以new。

時間妖
TA貢獻1條經(jīng)驗 獲得超1個贊
這種new形式是 匿名內(nèi)部類,但由于TestInterface是接口,所以這個類與TestInterface接口是implements關系。
這個可以通過在“cmd”下輸入“javap + 生成的'文件名$數(shù)字.class'”進行反編譯,這樣能看到一個繼承關系。
添加回答
舉報
0/150
提交
取消