我正在研究基础Java,这让我对在Java中访问私有方法感到困惑。在以下代码中,没有编译错误以及运行时错误
public class Base{
private void foo() {
System.out.println("In BaseClass.foo()");
}
void bar() {
System.out.println("In BaseClass.bar()");
}
public static void main(String[] args) {
Base po = new DerivedClass();
po.foo(); // No compiling error here
po.bar();
}
}
class DerivedClass extends Base {
void foo() {
System.out.println("In Derived.foo()");
}
void bar() {
System.out.println("In Derived.bar()");
}
}
但是当我将main方法移动到公共JavaCertificate类时,由于访问私有方法foo而显示错误
public class JavaCertificate {
public static void main(String[] args) {
Base po = new DerivedClass();
po.foo(); // Now it shows compiling error
po.bar();
}
}
class Base{
private void foo() {
System.out.println("In BaseClass.foo()");
}
void bar() {
System.out.println("In BaseClass.bar()");
}
}
class DerivedClass extends Base {
void foo() {
System.out.println("In Derived.foo()");
}
void bar() {
System.out.println("In Derived.bar()");
}
}
任何人都可以帮我解释一下。感谢