关于java内部类的继承的一个小问题
2016-12-10 10:40
246 查看
今天看编程思想第四版,10.9中的例子看的有点迷糊。
package innerclasses;
class WithInner{
class Inner{}
}
public class InheritInner extends WithInner.Inner{
InheritInner(WithInner wi){
wi.super();
}
public static void main(String[] args){
WithInner wi = new WithInner();
InheritInner ii = new InheritInner(wi);
}
}
疑惑就是这里为啥写成 wi.super();
如今查了下,比较好的解释如下:
这里的wi.super()并不是调用外部类的super,而是你调用Inner的super必须这么写。
内部类(非静态)构造器必须连接到其外部类的对象的引用,这就出现了诸如 wi.super() 看似奇怪的语法,可以看成是一个域。理解时你可以忽略掉前面的wi.
package innerclasses;
class WithInner{
class Inner{}
}
public class InheritInner extends WithInner.Inner{
InheritInner(WithInner wi){
wi.super();
}
public static void main(String[] args){
WithInner wi = new WithInner();
InheritInner ii = new InheritInner(wi);
}
}
疑惑就是这里为啥写成 wi.super();
如今查了下,比较好的解释如下:
这里的wi.super()并不是调用外部类的super,而是你调用Inner的super必须这么写。
内部类(非静态)构造器必须连接到其外部类的对象的引用,这就出现了诸如 wi.super() 看似奇怪的语法,可以看成是一个域。理解时你可以忽略掉前面的wi.
相关文章推荐
- 关于Java继承一个值得思考的问题。
- JAVA中关于继承和隐藏的一个另类问题。
- 关于Java包导入的一个奇怪问题(www.sunxin.org)
- 关于java的编码问题,个人的一个补充
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- 一个小的知识点关于java获取系统时间的问题
- 一个关于透明度继承的问题
- 有关于在Java 类的静态初始化块中创建一个自身实例的问题。
- 探讨一个关于“继承”的问题
- 一个关于JAVA的问题
- 学习Java的第一步是安装好JDK,写一个Hello World, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加
- java中关于static的一个小问题
- 关于java继承和多态的问题
- 关于继承的一个问题
- 一个关于继承和多态的问题(思索篇)
- 一个关于java.net.Socket的超时的问题
- 一个关于Java数据类型的有趣问题
- 一个典型的关于java(Overriding && Overloading)问题
- [转]关于java继承的private关键字问题
- java 中关于package的一个问题