匿名内部类可以说是局部内部类的特殊形式,也须放在方法内,其前提是存在一个类或者接口,这里的类可以是抽象类,也可以是具体类
匿名内部类的好处是不用再多写一个类出来,相当于实现类或是子类的简写
如果只使用一次就使用匿名内部类
package 内部类;
//匿名内部类
public class ooouter {
private int s=1;
public int getS() {
return s;
}
public void work() {
new inner()/*{重写方法;}*/.eat();//直接调用方法
//间接调用方法 inner i=new inner(){重写方法(匿名内部类为接口或抽象类时);} i.eat;
//本质是一个继承了该类或实现了该接口的子类匿名对象
//如果这里是接口,那么问题来了,接口不是不能创建对象吗?
//接口的确不能创建对象,但是这里是根据匿名对象创建对象,匿名对象已经将方法重写了,相当于是接口的实现类,用接口的实现类创建对象就没问题了
}
}
public class inner {//可以是具体类或抽象类,也可以是接口
public void eat(){
System.out.println("匿名内部类");
}
}
//测试类
public class tttest {
public static void main(String[] args) {
ooouter o=new ooouter();
System.out.println(o.getS());//调用外部类的私有方法
o.work();//调用含匿名内部类的方法
}
}
本文介绍了Java中的匿名内部类,它作为局部内部类的特殊形式,可以在方法内直接定义。文章通过一个示例展示了如何使用匿名内部类实现特定功能,包括重写方法并直接调用。匿名内部类简化了代码,尤其适用于仅需使用一次的情况。同时,解释了即使接口不能直接创建对象,匿名内部类依然可以通过实现接口的方法来创建其实例。
1192

被折叠的 条评论
为什么被折叠?



