Java靜態(tài)方法不具有多態(tài)性詳解
動(dòng)態(tài)綁定機(jī)制使得基類(lèi)的引用能夠指向正確的子類(lèi)對(duì)象,從而使得面向基類(lèi)編程成為可能。
然而動(dòng)態(tài)綁定在以下兩種情況會(huì)失效。
1、基類(lèi)方法是private或final修飾的
這個(gè)很好理解,因?yàn)閜rivate說(shuō)明該方法對(duì)子類(lèi)是不可見(jiàn)的,子類(lèi)再寫(xiě)一個(gè)同名的方法并不是對(duì)父類(lèi)方法進(jìn)行復(fù)寫(xiě)(Override),而是重新生成一個(gè)新的方法,也就不存在多態(tài)的問(wèn)題了。同理也可以解釋final,因?yàn)榉椒ㄍ瑯邮遣豢筛采w的。
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 */
輸出結(jié)果并不像設(shè)想的那樣,輸出 "Sub staticMehtod"。因?yàn)殪o態(tài)方法是與類(lèi)而不是與某個(gè)對(duì)象相關(guān)聯(lián),c.staticMethod();等同于Car.staticMethod(); 所以盡量不要使用實(shí)例變量去調(diào)用靜態(tài)方法,避免混淆。
以上這篇Java靜態(tài)方法不具有多態(tài)性詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java基礎(chǔ)教程之構(gòu)造器與方法重載
- Java構(gòu)造器使用方法及注意事項(xiàng)
- Java私有構(gòu)造器使用方法示例
- 實(shí)例解析Java中的構(gòu)造器初始化
- Java 7菱形語(yǔ)法與泛型構(gòu)造器實(shí)例分析
- Java Lambda表達(dá)式的方法引用和構(gòu)造器引用實(shí)例分析
- java用接口、多態(tài)、繼承、類(lèi)計(jì)算三角形和矩形周長(zhǎng)及面積的方法
- Java多態(tài)和實(shí)現(xiàn)接口的類(lèi)的對(duì)象賦值給接口引用的方法(推薦)
- java 將方法作為傳參--多態(tài)的實(shí)例
- 基于Java中對(duì)域和靜態(tài)方法的訪問(wèn)不具有多態(tài)性(實(shí)例講解)
- Java基礎(chǔ)之方法重寫(xiě)和多態(tài)示例
- Java中構(gòu)造器內(nèi)部的多態(tài)方法的行為實(shí)例分析
相關(guān)文章
SpringMVC 傳日期參數(shù)到后臺(tái)的實(shí)例講解
下面小編就為大家分享一篇SpringMVC 傳日期參數(shù)到后臺(tái)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12java實(shí)現(xiàn)二維碼掃碼授權(quán)登陸
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)二維碼掃碼授權(quán)登陸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10關(guān)于@Component注解的含義說(shuō)明
這篇文章主要介紹了關(guān)于@Component注解的含義說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解
在項(xiàng)目上線之后,往往會(huì)出現(xiàn)一些不可預(yù)料的異常信息,對(duì)于邏輯性或設(shè)計(jì)性問(wèn)題,開(kāi)發(fā)人員或者維護(hù)人員需要通過(guò)日志,查看異常信息并排除異常,這篇文章主要給大家介紹了關(guān)于SpringMVC學(xué)習(xí)之JSON和全局異常處理的相關(guān)資料,需要的朋友可以參考下2022-10-10UrlDecoder和UrlEncoder使用詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了UrlDecoder和UrlEncoder使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07SpringBoot集成Redis實(shí)現(xiàn)驗(yàn)證碼的簡(jiǎn)單案例
本文主要介紹了SpringBoot集成Redis實(shí)現(xiàn)驗(yàn)證碼的簡(jiǎn)單案例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Java經(jīng)典排序算法之插入排序代碼實(shí)例
這篇文章主要介紹了Java經(jīng)典排序算法之插入排序代碼實(shí)例,插入排序是一種最簡(jiǎn)單直觀的排序算法,它的工作原理是通過(guò)構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入,需要的朋友可以參考下2023-10-10利用logback 設(shè)置不同包下的日志級(jí)別
這篇文章主要介紹了利用logback 設(shè)置不同包下的日志級(jí)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12