溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java多態(tài)的特性詳解

發(fā)布時間:2021-09-01 18:26:30 來源:億速云 閱讀:125 作者:chen 欄目:編程語言

這篇文章主要介紹“java多態(tài)的特性詳解”,在日常操作中,相信很多人在java多態(tài)的特性詳解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java多態(tài)的特性詳解”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

什么是多態(tài)

    多態(tài)就是一個對象具有多種形態(tài),就是父類的引用類型變量指向子類的對象或者接口的引用類型變量指向接口實(shí)現(xiàn)類的對象,使用前提的必須存在繼承和實(shí)現(xiàn)關(guān)系,簡單來說就是,一個引用變量到底指向哪個類的實(shí)例對象和這個引用變量所調(diào)用的方法到底是哪個類的,必須在程序運(yùn)行期間才能決定。這樣不需要修改源代碼就可以改變程序運(yùn)行時所綁定的代碼,讓程序具有多個運(yùn)行狀態(tài),這就是多態(tài)性。

多態(tài)注意條件

    要實(shí)現(xiàn)多態(tài),需要注意如下前提條件:

    a. 需要有繼承關(guān)系;

    b. 子類需要重寫父類的方法;

    c. 需要將子類的對象賦值給父類的引用

成員訪問特點(diǎn)
    成員變量:編譯看父類,運(yùn)行看父類
    成員方法:編譯看父類,運(yùn)行看子類
    靜態(tài)方法:編譯看父類,運(yùn)行看父類

多態(tài)(靜態(tài)綁定,動態(tài)綁定)

    1. 靜態(tài)綁定:即方法名相同,方法簽名不相同。實(shí)參和哪個方法形參最大限度匹配就調(diào)用哪個重載方法,如 int 型實(shí)參找不到對應(yīng)的 int 型形參重載方法時就會尋找 double 型形參的方法,如果實(shí)參是對象的引用,會先找形參為自身類類型的,找不到的話就找形參為父類類型引用的重載方法。重載是在編譯期間就確定好要調(diào)用哪個方法了,不會因?yàn)橐盟赶虻木唧w對象不同而不同。如下代碼所示:

public class A{
   void fun(String str);
   void fun(int number);
}

    2.動態(tài)綁定:即父類與子類有同樣的方法名。父類引用指向子類對象,調(diào)用某個被覆蓋的方法,在程序運(yùn)行之前,并不知道調(diào)用哪個方法,只有當(dāng)運(yùn)行時才知道,因?yàn)檫\(yùn)行時該父類引用所具體指向的對象的同名方法會被調(diào)用,這個在編譯時是不確定的,因?yàn)榫幾g之所以通過只不過是因?yàn)榫幾g時,編譯器只會去該父類引用所代表的父類中去尋找該方法名,如果找到了,并且有權(quán)限調(diào)用就編譯通過。如下代碼所示:

public class A{
   void fun() {
       System.out.println("I'am class A.fun()");
   }
}

public class B extends A{
   @Override
   void fun() {
       System.out.println("I'am class B.fun()");
   }
}

多態(tài)優(yōu)缺點(diǎn)

    優(yōu)點(diǎn):

        1)可替換性(substitutability):多態(tài)對已存在代碼具有可替換性;

        2)可擴(kuò)充性(extensibility):多態(tài)對代碼具有可擴(kuò)充性。增加新的子類不影響已存在類的多態(tài)性、繼承性,以及其他特性的運(yùn)行和操作。實(shí)際上新加子類更容易獲得多態(tài)功能;

        3)接口性(interface-ability):多態(tài)是超類通過方法簽名,向子類提供了一個共同接口,由子類來完善或者覆蓋它而實(shí)現(xiàn)的;

        4)靈活性(flexibility):它在應(yīng)用中體現(xiàn)了靈活多樣的操作,提高了使用效率;

        5)簡化性(simplicity):多態(tài)簡化對應(yīng)用軟件的代碼編寫和修改過程,尤其在處理大量對象的運(yùn)算和操作時,這個特點(diǎn)尤為突出和重要;

    缺點(diǎn):

        1) 不能使用子類的特有屬性和行為

總結(jié)

到此,關(guān)于“java多態(tài)的特性詳解”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI