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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈军 中级黑马   /  2012-11-5 10:32  /  3988 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码如下
class A{
   class  B{
  }
}

class C extends A.B{
}
Eclipse会提示:
No enclosing instance of type A is available due to some intermediate constructor invocation
因为B的外部类A没有实例化,所以这样写会报错。
但是如果B是static的,就没错。

可是如果非要继承一个非static的内部类。应该怎么写呢?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

4 个回复

倒序浏览
刚才突然发现。。在C的构造器传递A对象就可以了。但是感觉有点别扭。居然还要import,代码如下:
import cn.basic.A.B
class A{
   class  B{
  }
}

class C extends B{
     C(A aa){
        aa.super();
    }
}

真感觉别扭。。。aa.super()这句也不能省。 但是还是有点想不明白。
回复 使用道具 举报
其实我真心不知道你在想什么呢?用正常人思维思考问题好不好?之所以是内部类的目的就是不想让其他类使用。你却倒好。。。。
如果你非的如此。你既然想继承B那没就必须先有A在C的构造方法里先创建一个A有什么不合理的吗?
真心劝你。别专这牛角尖了。有这时间。多写写项目、了解业务逻辑。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
陈云展 发表于 2012-11-5 11:12
其实我真心不知道你在想什么呢?用正常人思维思考问题好不好?之所以是内部类的目的就是不想让其他类使用。 ...

呵呵。多谢。正在进行中
回复 使用道具 举报
呵呵 这些都是原理,我也希望别去研究这些吧,看看代码什么的,多积累积累代码吧,会对你有好处的,大家一起加油了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马