1. 内部类:在一个类的内部还有另一个类。
匿名内部类:就是一个类在整个操作中只使用一次的话,就可以将其定义为匿名内部类。匿名内部类是在抽象类及接口的基础上发展起来的。
匿名对象举例:
public class NeiBuLei {
public static void main(String[] args) {
new X().fun1();
}
}
interface Q{
public void printInfo();//抽象方法
}
class N implements Q {
public void printInfo(){
System.out.println("hello,java!!");
}
}
class X {
public void fun1(){
this.fun2(new N());//向上转型
}
public void fun2(Q q){
q.printInfo();
}
}
运行结果:
hello,java!!
如果此时B类只使用一次的话,那么就没必要为其单独定义一个类。此时就可以使用匿名内部类解决问题了!
修改后:
public class NeiBuLei1 {
public static void main(String[] args) {
new X1().fun1();
}
}
interface A1{
public void printInfo();
}
class X1{
public void fun1(){
this.fun2(new A1(){//匿名内部类
public void printInfo(){
System.out.println("hello,world");
}
});
}
public void fun2(A1 a){
a.printInfo();
}
}
运行结果:hello,world