A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张雄 于 2012-12-11 22:05 编辑

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

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 Chaiber 于 2012-12-6 21:48 编辑

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

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

其次,匿名内部类本身就没有名字,是为了方便使用,我认为是不能被继承的,一个连名字都没有的类,如何去建立对象去使用呢?

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
1.匿名内部类除了可以继承Object外,可以继承其他类的。
2.创建匿名内部类的条件就是,这个匿名内部类必须是某个类的子类,或实现某个接口,
这样才能用其父类的名字以多态的形式创建这个匿名内部类。
3.匿名内部类没有名字是不能直接被其他类继承的。
4.以上是我的理解,希望可以帮到楼主。

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 赞一个!

查看全部评分

回复 使用道具 举报
例如:
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();这样才提供了必要的引用,然后程序才能编译通过

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马