黑马程序员技术交流社区

标题: 匿名内部类 [打印本页]

作者: 王丽    时间: 2011-7-27 06:24
标题: 匿名内部类
匿名内部类是否可继承其他类,是否可以实现接口? 我觉得应该可以吧。。。
作者: 匿名    时间: 2011-7-27 06:43
可以实现接口,还可以扩展类,但是两者不能兼备。实现接口也只能实现一个接口。
作者: 匿名    时间: 2011-7-27 16:36
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,
但一个内部类可以作为一个接口,由另一个内部类实现。
作者: 匿名    时间: 2011-7-27 18:10
标题: 回复 楼主 的帖子
不能继承其他类,但是可以作为其他类的接口
作者: 匿名    时间: 2011-7-27 19:25
各位看样不是很了解匿名内部类啊。
所谓匿名就是没有名字,一个没有名字类,咱们就没法表示它。因此,匿名内部类是依托于某个已经存在的类或接口的。
也就是说,匿名内部类必须继承一个已经存在的类,或实现一个已经存在的接口。
范例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()方法给删掉,编译器就会提示您,有未重写的方法。

因此,匿名内部类可以继承类,也可以实现接口。甚至可以说,匿名内部类必须要 继承一个类或实现一个接口。
但是匿名内部类不能同时继承类,和实现接口,二者他只能选一个。
作者: 匿名    时间: 2011-7-27 22:12
可以继承其他类或接口,不仅可以,而且必须。
作者: 匿名    时间: 2011-7-27 22:17
因为内部类的实现本身就要继承一个类或实现一个接口。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2