gpt4 book ai didi

java - 继承中的重写

转载 作者:行者123 更新时间:2023-12-02 10:36:23 26 4
gpt4 key购买 nike

// file name: Main.java 
class Base {
private void foo() {
System.out.printf("Message");
}
}

class Derived extends Base {
public void foo() {
System.out.printf("Message1");
} // works fine
}

public class Main {
public static void main(String args[]) {
Base d = new Derived();
d.foo();
}
}

当我写Derived d=new Derived()时它工作正常,但是当我写 Base d =new Derived() 时它给出了私有(private)函数无法被覆盖的错误。

最佳答案

我不知道你为什么说“它给出了私有(private) fn 的错误不能被覆盖” - 这不是你尝试编译它时得到的错误。相反,它给出以下错误:

$ javac Main.java
Main.java:16: error: foo() has private access in Base
d.foo();
^
1 error

原因:因为 foo()Base 类中的 private 方法,因此不能在 类型的变量上调用它>基础

另外:你确实不能重写私有(private)方法;事实上,Derived 类中的 foo() 方法是与 类中的 foo() 方法完全独立的方法Base,恰好具有相同的名称。它不会重写Base类中的方法。

关于java - 继承中的重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53262143/

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