Java靜態(tài)方法不具有多態(tài)性詳解
動態(tài)綁定機制使得基類的引用能夠指向正確的子類對象,從而使得面向基類編程成為可能。
然而動態(tài)綁定在以下兩種情況會失效。
1、基類方法是private或final修飾的
這個很好理解,因為private說明該方法對子類是不可見的,子類再寫一個同名的方法并不是對父類方法進行復寫(Override),而是重新生成一個新的方法,也就不存在多態(tài)的問題了。同理也可以解釋final,因為方法同樣是不可覆蓋的。
2、方法是static修飾的
代碼如下所示.
class Base {
public static void staticMethod() {
System.out.println("Base staticMehtod");
}
public void dynamicMehtod() {
System.out.println("Base dynamicMehtod");
}
}
class Sub extends Base {
public static void staticMethod() {
System.out.println("Sub staticMehtod");
}
public void dynamicMehtod() {
System.out.println("Sub dynamicMehtod");
}
}
public class TJ4 {
public static void main(String args[]) {
Base c = new Sub();
c.staticMethod();
c.dynamicMehtod();
}
}/* OutPut:
Base staticMehtod
Sub dynamicMehtod
*/
輸出結果并不像設想的那樣,輸出 "Sub staticMehtod"。因為靜態(tài)方法是與類而不是與某個對象相關聯(lián),c.staticMethod();等同于Car.staticMethod(); 所以盡量不要使用實例變量去調用靜態(tài)方法,避免混淆。
以上這篇Java靜態(tài)方法不具有多態(tài)性詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java基礎教程之構造器與方法重載
- Java構造器使用方法及注意事項
- Java私有構造器使用方法示例
- 實例解析Java中的構造器初始化
- Java 7菱形語法與泛型構造器實例分析
- Java Lambda表達式的方法引用和構造器引用實例分析
- java用接口、多態(tài)、繼承、類計算三角形和矩形周長及面積的方法
- Java多態(tài)和實現(xiàn)接口的類的對象賦值給接口引用的方法(推薦)
- java 將方法作為傳參--多態(tài)的實例
- 基于Java中對域和靜態(tài)方法的訪問不具有多態(tài)性(實例講解)
- Java基礎之方法重寫和多態(tài)示例
- Java中構造器內部的多態(tài)方法的行為實例分析
相關文章
UrlDecoder和UrlEncoder使用詳解_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了UrlDecoder和UrlEncoder使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
SpringBoot集成Redis實現(xiàn)驗證碼的簡單案例
本文主要介紹了SpringBoot集成Redis實現(xiàn)驗證碼的簡單案例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

