匿名内部类
程序员文章站
2022-03-06 17:00:45
...
package cn.java.objectoriented; /** 匿名内部类:内部类的简写格式。 前提: 内部必须继承或者实现一个外部类或者外部接口。 匿名内部类其实就是一个子类匿名对象。 场景之一: 当函数的参数是接口类型时,e而且该接口中的方法不超过3个时, 可以给这个函数传递一个匿名内部类。这样书写较为简单。 格式: new 父类名or接口名(){} */ abstract class AbsDemo { abstract void show(); } //正常内部类 class OuterClass { int num = 6; class Inner extends AbsDemo { void show() { System.out.println("正常内部类:num="+num); } } public void method() { new Inner().show(); } } //匿名内部类方式 class OuterClass2 { int num = 6; public void method() { new AbsDemo() { void show() { System.out.println("匿名内部类:num+===="+num); } }.show(); } } //匿名内部类实现接口的形式,和调用多方法情况 interface Inter { void show1(); void show2(); } class OuterClass3 { int num=6; /* class Inner implements Inter { public void show1(){} public void show2(){} } */ public void function() { // Inner in = new Inner(); // in.show1(); // in.show2(); Inter in = new Inter() { public void show1(){ System.out.println("匿名内部类实现接口的形式show1: "+num); } public void show2(){ System.out.println("匿名内部类实现接口的形式show2: "+num); } }; in.show1(); in.show2(); } } public class InnerClassOfAnonymous { static int num=88; public static void main(String[] args) { new OuterClass().method(); new OuterClass2().method(); new OuterClass3().function(); //实现接口的匿名内部类作为参数传递 method2(new Inter() { public void show2() { System.out.println("实现接口的匿名内部类作为参数传递"+num); } public void show1() { System.out.println("实现接口的匿名内部类作为参数传递"+num); } }); } public static void method2(Inter in) { in.show1(); in.show2(); } }
上面类InnerClassOfAnonymous的main方法的执行结果为:
正常内部类:num=6
匿名内部类:num+====6
匿名内部类实现接口的形式show1: 6
匿名内部类实现接口的形式show2: 6
实现接口的匿名内部类作为参数传递88
实现接口的匿名内部类作为参数传递88
上一篇: 全新勒索病毒在欧洲爆发
下一篇: 友情链接是什么 这些作用你知道吗