java匿名内部类

来源:互联网 发布:网络侵权的管辖 编辑:程序博客网 时间:2024/06/06 02:11

匿名内部类必须继承一个父类或者实现一个接口。匿名内部类不能是抽象类,因为系统在创建匿名内部类时,会立即创建匿名内部类的对象,因此不允许匿名内部类为抽象类。

匿名内部类不能定义构造器,由于匿名内部类没有类名,所以无法定义构造器,但匿名构造类可以初始化块,可以通过实例初始化块来完成构造函数需要完成的部分。

语法格式:

new 实现接口()|父类构造器(实参列表){匿名内部类的类体部分}

interface MyInter{

public String getName();

}

public class AnonymousTest{

public void test(MyInter i){

System.out.println("The Content of this function is" + i.getName());

}

}

public static void main(String[] args){

AnonymousTest ta;

ta.test(new MyInter(){

public String getName(){

return "Anonymous Content";

}

});

}

}

简言之,匿名内部类的实现方式:第一种,继承一个抽象类重写其方法;第二种,实现一个接口并实现其方法。

使用匿名内部类的两种情况:

实现的抽象方法需要特殊实现;需要抽象类或接口对象。

在匿名内部类编写自己的其他方法不现实,匿名内部类只会被调用一次。

当接口的实例对象需要被重复使用时,可以将接口的实现类定义成一个独立的类;如果这个类只需要一次性使用,则可以定义成匿名内部类。