1、匿名类
匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也就是其他地方就不能引用,不能实例化,只用一次,当然也就不能有构造器。
匿名类根据位于地方不同分为:成员匿名类和局部匿名类。
匿名类不能使用任何关键字和访问控制符,匿名类和局部类访问规则一样,只不过内部类显式的定义了一个类,然后通过new的方式创建这个局部类实例,而匿名类直接new一个类实例,没有定义这个类。匿名类最常见的方式就是回调模式的使用,通过默认实现一个接口创建一个匿名类然后,然后new这个匿名类的实例。
2、实现方式
new 父类构造器(参数列表)|实现接口()
{
//匿名内部类的类体部分
}
匿名类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的隐式引用。
1、接口继承举例参考上篇文章Java接口实例化
public class Test {
public static void Main() {
...
btn.setOnClickListetener(new OnClickListener(){ //局部匿名类
@Override
public void onClick(View v) { }
});
}
public Runnable r = new Runnable()//成员匿名类
{
@Override
public void run()
{
...
}
};
}
2、类继承实现
public abstract class Bird { public abstract int fly(); }
public class Test {
public static void main(String[] args) {
flyDis(new Bird() { public int fly() { return 10000; } });
}
public static void flyDis(Bird bird){
System.out.println("能够飞" + bird.fly() + "米");
}
}
//打印出来:能够飞10000米