我們可以在 Java 中重寫私有方法嗎\n
理想情況下,沒有。但是,使用 tricky 程式碼,子類也可以重寫私有方法。請參閱以下示例 −
示例
class A {
private void display() {
System.out.println("A.display");
}
public void callDisplay() {
System.out.println("A.callDisplay");
display();
}
}
class B extends A {
private void display() {
System.out.println("B.display");
}
public void callDisplay() {
System.out.println("B.callDisplay");
display();
}
}
public class Tester {
public static void main(String[] args) {
A a = new B();
a.callDisplay();
B b = new B();
b.callDisplay();
A a1 = new A();
a1.callDisplay();
}
}輸出
B.callDisplay B.display B.callDisplay B.display A.callDisplay A.display
在上述示例中,一個物件屬於 B 類,a.callDisplay() 會呼叫 B 的 callDisplay() 方法,該方法又呼叫 B 的 display 方法。
根據 Java 文件 Java 教程:預定義註解型別.
雖然在重寫其超類中的方法時不需要使用此註解,但這有助於防止錯誤。如果使用 @Override 標記的方法在其中一個超類中正確重寫一個方法失敗,將生成一個錯誤。
在 B.display() 方法上新增 @Override 註解。Java 編譯器將丟擲錯誤。
class B extends A {
@Override
private void display() {
System.out.println("B.display");
}
public void callDisplay() {
System.out.println("B.callDisplay");
display();
}
}輸出
The method display() of type B must override or implement a supertype method.
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP