在Java中除了内部类外,还有一种匿名内部类。匿名内部类就是指没有一个具体名称的类,且是在接口和抽象类的应用上发展起来的,那么匿名内部类有哪些作用呢?
interface A{
public void printInfo() ;
}
class B implements A{ // 实现接口
public void printInfo(){
System.out.println("Hello World!!!") ;
}
};
class X {
public void fun1(){
this.fun2(new B()) ;
}
public void fun2(A a){
a.printInfo() ;
}
};
public class AnonymousInnerDemo01{
public static void main(String args[]){
new X().fun1() ; // 实例化X类的对象,并调用fun1()方法
}
};
程序运行结果:
假设接口的实现类B只使用一次,那么此时就没必要单独定义一个子类B了, 使用匿名内部类完成
interface A {
public void printInfo();
}
class X {
public void fun1() {
this.fun2(new A() { //匿名内部类
public void printInfo() { //覆写接口中的抽象方法
System.out.println("Hello AnonymousInnerDemo!!!");
}
}
);
}
public void fun2(A a) { //接收接口实例
a.printInfo(); //调用方法
}
};
public class AnonymousInnerDemo02 {
public static void main(String args[]) {
new X().fun1(); // 实例化X类的对象,并调用fun1()方法
}
};
程序运行结果:
以上代码中的匿名内部类结构如下:
new A() { //匿名内部类
public void printInfo() { //覆写接口中的抽象方法
System.out.println("Hello AnonymousInnerDemo!!!");
}
}