各位看样不是很了解匿名内部类啊。
所谓匿名就是没有名字,一个没有名字类,咱们就没法表示它。因此,匿名内部类是依托于某个已经存在的类或接口的。
也就是说,匿名内部类必须继承一个已经存在的类,或实现一个已经存在的接口。
范例1:说它不能继承的童鞋,请看这里。[code=java]package org.cxy.demo;
public class Demo {
public static void main(String[] args) {
new Demo(){
public void print(){
System.out.println("匿名类的print方法");
}
}.print();
}
public void print(){
System.out.println("Demo类的print方法");
}
}[/code]程序执行结果:[code=java]匿名类的print方法[/code]若是匿名内部类无法继承类,那么此时,main方法内的匿名内部类,和Demo类是什么关系呢?
相应的,您也会看到,另一个范例。
范例2:接口? 照样秒杀。[code=java]package org.cxy.demo;
public class Demo{
public static void main(String[] args) {
new Priview(){
public void print(){
System.out.println("匿名类的print方法");
}
}.print();
}
}
interface Priview{
public void print();
}[/code]若您把匿名内部类中的print()方法给删掉,编译器就会提示您,有未重写的方法。
因此,匿名内部类可以继承类,也可以实现接口。甚至可以说,匿名内部类必须要 继承一个类或实现一个接口。
但是匿名内部类不能同时继承类,和实现接口,二者他只能选一个。 |