黑马程序员技术交流社区

标题: 关于继承内部类的小问题 [打印本页]

作者: 陈军    时间: 2012-11-5 10:32
标题: 关于继承内部类的小问题
代码如下
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的内部类。应该怎么写呢?
作者: 陈军    时间: 2012-11-5 10:45
刚才突然发现。。在C的构造器传递A对象就可以了。但是感觉有点别扭。居然还要import,代码如下:
import cn.basic.A.B
class A{
   class  B{
  }
}

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

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

呵呵。多谢。正在进行中
作者: 崔利鹏    时间: 2012-11-8 09:54
呵呵 这些都是原理,我也希望别去研究这些吧,看看代码什么的,多积累积累代码吧,会对你有好处的,大家一起加油了




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