匿名内部类是否可以继承其它类,是否可以实现接口?
1.什么是匿名内部类?
内部类,存在于另一个类内部的类,而匿名内部类,顾名思义,就是没有名字的内部类。
2.为什么需要匿名内部类?
每个内部类都能够各自继承某一实现类。因此,内部类不受限于外部类是否已继承自某一实现类。如果少了内部类所提供的“继承自多个具象或抽象类”的能力,设计上和编程上的某些问题会变得十分棘手。所以,从某个角度来看内部类,你可以说它是多重继承问题的完整解决方案。接口能够解决其中一部分问题,但内部类才能有效而实际地允许“多重实现继承”。也就是说,内部类实际上允许你继承多个接口。从这个层面上使用内部类时一般都是通过其父类或继承的接口来进行实例化和初始化的,如3中所示,这时内部类的名字是多余的,所以就使用了匿名内部类。
3.怎么实现匿名内部类?
匿名内部类的实现非常简单,如有一接口
Interface A{
public void method();
}
这时你可以写一个如下的语句得到接口A的实现类的对象
A a=new A(){ public void method(){System.out.println("hehe");} };
而其中的{ public void method(){System.out.println("hehe");} };就是定义了一个匿名内部类。
4.问题答案
以上可以看出匿名内部类在实现时必须借助一个类或一个接口,若从这个层次上讲它是可以继承其他类也可以实现接口的,但若是通过extends或implements关键字那是不可能的。