您的位置:首页 > 编程语言 > Java开发

关于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. 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: