Java 中可以過載或覆蓋靜態方法嗎?
如果一個類有多個名稱相同但引數不同的函式,則稱為方法過載。如果子類提供了其父類已提供的某個方法的具體實現,則稱為方法覆蓋。
方法過載提高了程式的可讀性。方法覆蓋提供了其超類引數在過載的情況下必須不同,在覆蓋的情況下必須相同的方法的具體實現。
現在考慮靜態方法的情況,那麼靜態方法在過載和覆蓋方面有以下規則。
可以透過另一個靜態方法過載。
不能被子類中的另一個靜態方法覆蓋。其背後的原因是子類只隱藏了靜態方法,而不是覆蓋它。
示例
以下示例演示了這一點。
class SuperClass {
public static void display() {
System.out.println("SuperClass.display()");
}
//Method overloading of static method
public static void display(int a) {
System.out.println("SuperClass.display(int): " + a);
}
}
class SubClass extends SuperClass {
//Not method overriding but hiding
public static void display() {
System.out.println("SubClass.display()");
}
}
public class Tester {
public static void main(String[] args) {
SuperClass object = new SubClass();
//SuperClass display method is called
//although object is of SubClass.
object.display();
object.display(1);
}
}
輸出
SuperClass.display() SuperClass.display(int): 1
注意
靜態方法在編譯時解析,不能被子類覆蓋。例項方法在執行時解析,可以被覆蓋。
靜態方法可以過載。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP