【发布时间】:2019-01-05 06:24:50
【问题描述】:
我创建了一个方法本地内部类并与抽象类结合。代码工作正常,但我不明白 IntelliJ 中的错误弹出窗口关于我无法在从抽象内部类扩展为私有的内部类中设置方法。
我必须从“Private InnerClassSubclass”更改为“Public InnerClassSubclass”,如果不这样做,错误如下:
“InnerClassSubclass”中的“innerMethod()”与“innerMethod()”冲突 在“内部类”中;试图分配较弱的访问权限 ('私人的');是“公开的”。
我认为私有是更强的特权,不是吗?只允许同一类内的类访问。
我也尝试将'abstract class InnerClass'更改为'private abstract class InnerClass'也出现此错误;
“此处不允许使用修饰符 'private'”在 private of 'private abstract 类InnerClass'
代码如下:
public class Outerclass {
// instance method of the outer class
private void outer_Method() {
int num = 23;
// method-local inner class
abstract class InnerClass {
abstract public void innerMethod();
} // end of inner class
class InnerClassSubclass extends InnerClass {
public void innerMethod() { //if I extends, I can't use private for innerMethod here.
System.out.println("This is method inner class " + num);
}
}
// Accessing the inner class
new InnerClassSubclass().innerMethod();
}
public static void main(String args[]) {
Outerclass outer = new Outerclass();
outer.outer_Method();
}
}
有人能解释一下为什么吗?谢谢。
【问题讨论】:
标签: java abstract-class inner-classes