当涉及到内部类时,我在尝试实现我在 Oracle 文档中阅读的有关继承的声明时遇到了麻烦。
该声明 :
嵌套类可以访问其封闭类的所有私有成员——字段和方法。因此,子类继承的公共或受保护的嵌套类可以间接访问超类的所有私有成员。
为了测试这一点,即看看我是否可以实现上述目标,我创建了一个具有内部类 IC1 的顶级类 OC1,然后我创建了另一个扩展 IC1 的顶级类 OC2。
在我什至可以开始编写单个方法之前,IDE 在 OC2 类主体本身处阻止了我说
“由于某些中间构造函数调用,没有类型 DataStructure 的封闭实例可用”
我读了一些其他答案,其中大部分指向 a) 将内部类更改为静态嵌套类——它解决了错误 b) 整个场景是不必要的和复杂的。
这是代码:
public class DataStructure {
// Create an array
private final static int SIZE = 15;
private int[] arrayOfInts = new int[SIZE];
public DataStructure() {
// fill the array with ascending integer values
super();
for (int i = 0; i < SIZE; i++) {
arrayOfInts[i] = i;
}
}
//other methods
//IC1
protected class instanceArr{
private int a = 8;
private static final int B = 4;
protected instanceArr(){
}
protected void doSomething(){
System.out.println("arrayOfInts[] is accessible " + arrayOfInts[6]);
}
}
//main method
}
OC2
public class DataStructureChild extends DataStructure.instanceArr{
public DataStructureChild(){
}
}
我知道这种情况并不理想,但我不想将内部类更改为静态嵌套类 - 这会破坏我的目的,即基本上尝试查看是否可以在没有 OC1 实例的情况下访问 arrayOfInts。
我误解了这句话吗?如果没有,请指出我正确的方向。
PS - 这是我的第一个问题 - 如果某些准则被蔑视,请提前道歉。
繁花不似锦
慕工程0101907
相关分类