代碼片段中,Person 類定義 private void print() 並供 public void fun() 內部調用。子類 Student 定義了同名 void print()(包私有)。調用 new Student().fun() 輸出「Person>void print」。
Person.print()Student.print() 只是新方法,非覆寫fun() 未被覆寫:調用仍走父類邏輯,this 雖指向子類對象,但私有方法解析看聲明類型class Person {
private void print() { System.out.println("Person"); }
public void fun() { this.print(); } // 編譯期綁定 Person.print
}
class Student extends Person {
void print() { System.out.println("Student"); } // 隔離方法
}
new Student().fun(); // 輸出 Person
protected 或 publicprotected abstract void hook(),子類實現