面向对象(匿名内部类与有名字内部类的比较)
生活随笔
收集整理的這篇文章主要介紹了
面向对象(匿名内部类与有名字内部类的比较)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
A:匿名內(nèi)部類
就是內(nèi)部類的簡化寫法B:前提
這里的類可以是具體類也可以是抽象類C:格式
new 類名或者接口(){ //表示繼承這個類或?qū)崿F(xiàn)這個接口重寫方法}D:本質(zhì)是什么呢?
是一個繼承了該類或者實現(xiàn)了該接口的子類匿名對象E:案例實現(xiàn)
按要求來寫一個匿名內(nèi)部類與一個有名字的內(nèi)部類進(jìn)行對比要求:創(chuàng)建一個Inter接口,接口里面有個抽象方法print,print這個抽象方法有個輸出語句,輸出 print ,然后分別用 **有名字的內(nèi)部類** 跟 **匿名內(nèi)部類** 這兩種方式去實現(xiàn)。一,有名字的內(nèi)部類(Outer)
package Demo_nimingneibulei;public class hasming {public static void main(String[] args) {Outer o =new Outer(); //創(chuàng)建對象o.method(); //調(diào)用method()方法}}interface Inter{ //定義接口public void print(); //接口里面有一個print抽象方法 }class Outer{ //有名字的內(nèi)部類去實現(xiàn)了Inter這個接口,然后重寫Inter接口里面抽象方法printclass Inner implements Inter{ //創(chuàng)建Inner這個類去實現(xiàn)Inter接口,Inner就是Inter的子類public void print(){ //重寫Inter接口里面的方法System.out.println("print");}}public void method(){ ① Inner i = new Inner();i.print();② new Inner().print(); //new Inner() 代表著Inter的子類對象,然后 .print() 再調(diào)用Inner里面重寫之后的print()方法 //①②兩種方法是一樣的想過,②是①的另外一種形式 // new Inter(); //創(chuàng)建Inter對象,是錯誤的,因為Inter是抽象的,無法去實例化} }二,匿名內(nèi)部類(Outer1)
package Demo_nimingneibulei;import Demo_nimingneibulei.Outer.Inner;public class Noname {public static void main(String[] args) {Outer1 o = new Outer1(); //創(chuàng)建Outer1該類的對象oo.method(); //調(diào)用Outer1里面的method方法} }interface Inter1 {public void print(); }class Outer1{ //創(chuàng)建匿名內(nèi)部類public void method(){ //匿名內(nèi)部類是局部內(nèi)部類的一種,所以必須寫在方法里面// new Inter(); //直接創(chuàng)建Inter對象,不能這樣寫,因為Inter1是個接口是抽象的,無法實例化new Inter1(){ //實現(xiàn)Inter接口,實現(xiàn)接口,必須重寫Inter1接口里面的抽象方法print()public void print(){ //重寫Inter接口里面的print抽象方法System.out.println("print");}}.print(); //.之前的內(nèi)容,代表在Inter1這個接口的子類對象,然后,我們就可以調(diào)用Inter1這個接口的子類對象里面的方法了,直接.print(),去調(diào)用該方法} //匿名內(nèi)部類與有名字的內(nèi)部類相比,不用再寫一個類名去實現(xiàn)接口或者去繼承類了 }總結(jié)
以上是生活随笔為你收集整理的面向对象(匿名内部类与有名字内部类的比较)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《秋日示休上人诗》第十三句是什么
- 下一篇: 面向对象(匿名内部类重写多个方法调用)