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

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

為北湖等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及北湖網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、北湖網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

什么是多態(tài)

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

多態(tài)注意條件

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

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

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

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

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

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

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

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

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

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)對(duì)已存在代碼具有可替換性;

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

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

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

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

    缺點(diǎn):

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

總結(jié)

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

網(wǎng)頁(yè)名稱:java多態(tài)的特性詳解
鏈接URL:http://muchs.cn/article8/jepiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作關(guān)鍵詞優(yōu)化、Google小程序開發(fā)、網(wǎng)站設(shè)計(jì)公司、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)