關(guān)于接口配合匿名內(nèi)部類(lèi)來(lái)使用的問(wèn)題
IPlayGame?i?=?new?IPlayGame(){
????public?void?playGame(){
????System.out.println("用匿名內(nèi)部類(lèi)的方式實(shí)現(xiàn)接口");
????}
?};以上的代碼,可不可以理解為通過(guò)一個(gè)IPlayGame接口的引用指向一個(gè)沒(méi)有名字但是通過(guò)重寫(xiě)playGame()方法成功實(shí)現(xiàn)了IPlayGame接口的匿名內(nèi)部類(lèi)中的一個(gè)對(duì)象?
new?IPlayGame(){
????public?void?playGame(){
????System.out.println("用匿名內(nèi)部類(lèi)的方式實(shí)現(xiàn)接口");
????}
?}.playGame();這一段是不是可以理解為通過(guò)一個(gè)沒(méi)有名字但是通過(guò)重寫(xiě)playGame()方法成功實(shí)現(xiàn)了IPlayGame接口的匿名內(nèi)部類(lèi)中的一個(gè)對(duì)象直接調(diào)用playGame()方法?
還請(qǐng)高人賜教。
2015-02-13
你說(shuō)的是對(duì)的,匿名內(nèi)部類(lèi)也就是沒(méi)有名字的內(nèi)部類(lèi),正因?yàn)闆](méi)有名字,所以匿名內(nèi)部類(lèi)只能使用一次,它通常用來(lái)簡(jiǎn)化代碼編寫(xiě),但使用匿名內(nèi)部類(lèi)還有個(gè)前提條件:必須繼承一個(gè)父類(lèi)或?qū)崿F(xiàn)一個(gè)接口。
舉例:
interface?Person?{ ????public?void?eat(); } ? public?class?Demo?{ ????public?static?void?main(String[]?args)?{ ????????Person?p?=?new?Person()?{ ????????????public?void?eat()?{ ????????????????System.out.println("eat?something"); ????????????} ????????}; ????????p.eat(); ????} }2017-01-08
為什么你定義的接口中的方法eat()不是抽象的,定義在接口中的方法不應(yīng)該都是抽象的嗎?