匿名内部类的使用
匿名内部类的使用
为什么需要匿名内部类?
匿名内部类的作用:比如想要创建几个类,但是都只用一次。我们可以不再采用传统的步骤(新建一个类实现接口再重写方法),而是采用匿名内部类,来简化开发。
一、基于接口的匿名内部类
interface AI{ //一个接口ai
void cry( );
}
class Tiger implements AI{ //使用传统方法新建一个类实现接口
@override
pubilc void cry(){
system.out.println("老虎叫");
}
}
class outer { //一个外部类
public void method(){ //一个方法
Tiger tiger = new Tiger(); //使用传统方法创建一个tiger并调用方法
tiger.cry();
AI taiger = new AI(){ //采用匿名内部类实现
@override
public void cry(){
system.out.println("老虎叫");
}
}
}
}
那么匿名内部类的底层是什么东西呢
AI taiger = new AI(){ //采用匿名内部类实现
@override
public void cry(){
system.out.println("老虎叫");
}
}
///底层逻辑
class outer$1 implements AI(){ //匿名内部类的名字就是外部类的名字加一个$
@override
public void cry(){
system.out.println("老虎叫");
}
}
二、基于类的匿名内部类
class Father {
public Father (String name){ //构造器
}
public void test(){ //方法
}
}
class outer { //一个外部类
public void method(){ //一个方法
Tiger tiger = new Tiger(); //使用传统方法创建一个tiger并调用方法
Father father = new Father("jack"){ //匿名内部类就是加个(大括号;)
};
}
他的底层逻辑就是
class outer$2 extends Father(){
}
new这个东西会返回一个对象,Father("jack"){ };创建了一个匿名内部类outer$2,然后被new返回给father。所以,father的编译类型是Father,运行类型是outer$2。
本文作者:翰林猿
本文链接:https://www.cnblogs.com/hanlinyuan/p/17173424.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
Java学习随笔
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步