java语言基础(49)——匿名内部类的本质理解
1 匿名内部类就是内部类的简化写法
2 前提,存在一个类或接口
3 格式: new 类名或接口名(){
重写方法......
}
4 好处:用完即回收。少占内存。
上代码:
interface Inner // 接口
{
public abstract void show();
}
abstract class InnerClass // 抽象类 也可以是具体类
{
public abstract void show();
public abstract void show2();
}
class Outer
{
public void method(){
// 接口匿名内部类
new Inner(){
public void show(){
System.out.println("Inner show");
}
}.show(); //输出 Inner show
// 抽象类匿名内部类 多态思想 调用多个方法
InnerClass IC = new InnerClass(){
public void show(){
System.out.println("InnerClass show");
}
public void show2(){
System.out.println("InnerClass show2");
}
};
IC.show(); //InnerClass show
IC.show2();//InnerClass show2
}
}
class AnonymousInnerClassTest
{
public static void main(String[] args){
Outer o = new Outer();
o.method();
}
}
抽象类和接口本来是不可以new操作的,但是此处可以,那是因为new 和 实现同时进行了。匿名 new 接口时,相当于new了一个实现了此接口的对象。匿名new抽象类时,相当于new了一个继承了此抽象类的子类对象。然后,对象可以调用其对应的方法。
版权声明
本文仅代表作者观点,不代表博信信息网立场。