一般来说,子类不可以调用父类的私有构造方法。
你这里这两个类都是同一个类的成员内部类,内部类可以自由地访问外部类的成员变量,即使是private的。所以一个成员内部类中可以访问另一个成员内部类(因为它可以看成是一个成员变量),被访问的成员内部类对访问它的成员内部类完全不设防。
内部类本来就可以访问任意外部类的私有方法和字段,TestMath1继承的TestMath本身就是UnSafeSequence的内部类,所以TestMath1能够访问UnSafeSequence里定义的任何私有方法和字段包括了TestMath里的私有方法和字段。
如果你把TestMath单独定义在UnSafeSequence外面,那TestMath1就不能访问TestMath里的私有方法和字段了。
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
java6语言规范中关于private修饰符的描述,顶级类及内部类的定义
鉴于以上的规定描述,那么外部类中可以访问构造器标示为private的TestMath内部类。
TestMath1同样是一个内部类,其继承了另一个内部类TestMath,因为一个内部类依赖外部类实例对象而存在,会隐式的关联一个外部类实例
所以
可以写成
这样就可以解释一个内部类的子类为什么可以访问其父类的私有的构造函数了