我的一位朋友向我問了這個問題。爲什麼下面的代碼在調用aa.x()時不會給出錯誤?
我明白,aa是對類B的對象的引用,但是在類A的方法內調用類A的私有方法,因此它是可見的,因此可以訪問。
我的理解是否正確?或者這背後還有其他原因嗎?瞭解私人方法的範圍
public class A {
public void xyz() {
System.out.println("A");
}
private void x() {
System.out.println("A:x");
}
public static void main(String[] args) {
B b = new B();
A aa = b;
aa.x();
aa.xyz();
B bb = (B) aa;
bb.xyz();
bb.xyz12();
}
}
class B extends A {
public void xyz() {
System.out.println("B");
}
public void xyz12() {
System.out.println("B-12");
}
}
這麼多重複,很少時間... *編輯:*呃,好吧,也許沒有子類皺紋。 –
如果您想了解它,請閱讀https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html上的訪問修飾符。私人訪問修飾符是爲類和主要是在這個類,所以沒有問題,調用該方法 – Gaskoin
這裏不妨寫'A aa = new A()'而不是'A aa = b'。由於'A a = b'是合法的,'aa.x()'在'A#main()'內是合法的,所以一切正常。 –