public class AnonymousInnerClass {
//匿名内部类
public static void main(String[] args) {
Outer outer = new Outer();
outer.outerf1();
}
}
//写一个外部类
class Outer {
//外部类的一个方法
public void outerf1() {
//写一个基于接口的匿名内部类
IA tiger = new IA() {
//tiger类只使用一次,后面不再使用
//可以使用匿名内部类来简化开发
//这个匿名内部类
//tiger的编译类型是IA 运行类型就是这个匿名内部类
/*
其实底层是有一个类,Outer$1。这个new表示在jdk底层创建一个匿名内部类的同时,创建了这个匿名内部类的实例。
并把地址返回给tiger
*/
@Override
public void cry() {
System.out.println("程序员小彭报到");
}
};
//写一个基于类的匿名内部类
Father father = new Father("小明") {
//father的编译类型是 Father,father由于后面打上了大括号,不再是对象
// 它的运行类型是匿名内部类,Outer$2
//和上面说的基于接口的匿名内部类一样,new表示在jdk底层创建一个匿名内部类的同时,创建了这个匿名内部类的实例。
//并把地址返回给tiger
};
tiger.cry();
System.out.println("father对象的运行类型是" + father.getClass());
}
}
//写一个接口
interface IA {
void cry();
}
//写一个父类
class Father {
public Father(String name) {
}
public void test() {
}
}
匿名内部类
最新推荐文章于 2023-08-27 16:38:33 发布