Java中的私有方法混淆

时间:2017-07-11 03:55:29

标签: polymorphism encapsulation

我正在研究基础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()");
    }
}

任何人都可以帮我解释一下。感谢

0 个答案:

没有答案