黑马程序员技术交流社区

标题: 求高手解答 关于匿名内部类能否继承与被继承的问题? [打印本页]

作者: 朝花夕拾    时间: 2012-12-6 21:27
标题: 求高手解答 关于匿名内部类能否继承与被继承的问题?
本帖最后由 张雄 于 2012-12-11 22:05 编辑

我想问下,除了Object类匿名内部类能否继承其他的类,为什么?匿名内部类能否被继承?为什么?求详细解释!!!

作者: Chaiber    时间: 2012-12-6 21:44
本帖最后由 Chaiber 于 2012-12-6 21:48 编辑

我不是高手,我就说说我的看法。

首先,定义匿名内部类的前提就是,必须继承一个类或者实现一个接口。在老师的视频当中就是继承的一个非Object的类。
匿名内部类的格式:new 父类或者接口(){定义子类的内容}

其次,匿名内部类本身就没有名字,是为了方便使用,我认为是不能被继承的,一个连名字都没有的类,如何去建立对象去使用呢?
作者: 刘菲    时间: 2012-12-6 22:40
1.匿名内部类除了可以继承Object外,可以继承其他类的。
2.创建匿名内部类的条件就是,这个匿名内部类必须是某个类的子类,或实现某个接口,
这样才能用其父类的名字以多态的形式创建这个匿名内部类。
3.匿名内部类没有名字是不能直接被其他类继承的。
4.以上是我的理解,希望可以帮到楼主。
作者: 张其辉    时间: 2012-12-7 00:16
例如:
class Outer{
    class Inner{}
}
public class In extends Outer.Inner{
    In(Outer o)
    {
         o.super();
    }
    public static void main(String[] args)
    {
         Outer o=new Outer();
         In in=new In(o);
    }
}这i个问题一直没去查过,但是也总感觉有点不明白,上面是我看书找的例子,把书上的分析写上来,共同学习吧:
     In只是继承了内部类Inner并不是继承了Outer,但是当要生成一个构造器时,默认的构造器不算好,而且不能只是传递一个指向外部类对象的引用,此外,必须在构造器
内使用如下语法:enclosingClassReference.super();这样才提供了必要的引用,然后程序才能编译通过




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