gpt4 book ai didi

java - 从本地方法抽象内部类扩展后,无法将内部类中的方法设置为私有(private)

转载 作者:行者123 更新时间:2023-12-04 15:56:04 24 4
gpt4 key购买 nike

我创建了一个本地内部类方法并与抽象类结合。代码工作正常,但我不明白 IntelliJ 中关于我无法在从抽象内部类扩展的内部类中将方法设置为私有(private)的错误弹出窗口。

我必须从“Private InnerClassSubclass”更改为“Public InnerClassSubclass”,如果我不这样做,错误如下:

'innerMethod()' in 'InnerClassSubclass' clashes with 'innerMethod()' in 'InnerClass'; attempting to assign weaker access privileges ('private'); was 'public'.

我认为 private 是更强的特权,不是吗?只允许同一个类中的类访问。

我也尝试将'abstract class InnerClass'更改为'private abstract class InnerClass'也出现了这个错误;

"Modifier 'private' not allowed here" at private of 'private abstract class 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();
}
}

有人可以解释一下为什么吗?谢谢。

最佳答案

您不能限制子类中方法的可见性。

假设一个 Animal 类有一个公共(public)方法“breath()”。客户端代码接收一个 Animal 对象并调用该方法。

现在假设您有一个 Dog 子类,并且您传递了一个 doggy 对象。客户端代码如何知道他的特定 Animal 不提供该方法?!

因此:限制方法的可见性在概念上是错误的,因此编译器会给你一个错误,正是这样说的。

关于java - 从本地方法抽象内部类扩展后,无法将内部类中的方法设置为私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51569624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com