新聞中心
java中什么是多態(tài)性?它具有什么優(yōu)點(diǎn)
Java是面向?qū)ο蟮恼Z(yǔ)言,多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)代碼重用的一個(gè)最強(qiáng)大機(jī)制,動(dòng)態(tài)性的概念也可以被說(shuō)成“一個(gè)接口,多個(gè)方法”。Java實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的基礎(chǔ)是動(dòng)態(tài)方法調(diào)度,它是一種在運(yùn)行時(shí)而不是在編譯期調(diào)用重載方法的機(jī)制,主要體現(xiàn)在繼承和接口實(shí)現(xiàn)兩方面,詳見(jiàn)例子:
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出雙陽(yáng)免費(fèi)做網(wǎng)站回饋大家。
繼承實(shí)現(xiàn)多態(tài)例如:
class A{
method(){
System.out.println("a");}
}
class B extends A{
method(){
System.out.println("b");}}
class test{
main(){
A test = new B();
test.method();//執(zhí)行以后輸出的是:b。解釋就是:父類引用(A)指向子類對(duì)象(B),這個(gè)引用調(diào)用的是子類的方法,而不是父類A的方法;
}}
繼承實(shí)現(xiàn)多態(tài)其實(shí)原理類似:
interface A{
method();}
class B implements A{
method(){
System.out.println();}}
class test{
main(){
A test = new B();
test.method();//此處便會(huì)使用java的多態(tài),B實(shí)現(xiàn)了A,雖然=前面是A test,但實(shí)際上生成的確是B的對(duì)象,所以調(diào)用它的方法,同繼承中的父類對(duì)象指向子類對(duì)象原理相同,只是此處為繼承;
}}
多態(tài)的好處非常明顯啊,有人總結(jié):
1.可替換性。多態(tài)對(duì)已存在的代碼具有可替換性。
2.可擴(kuò)充性。多態(tài)對(duì)代碼具有可擴(kuò)充性。增加新的子類不影響已存在類的多態(tài)性、繼承性,以及其他特性的運(yùn)行和操作。實(shí)際上新加子類更容易獲得多態(tài)功能。
3.接口性。多態(tài)是超類通過(guò)方法簽名,向子類提供了一個(gè)共同接口,由子類來(lái)完善或者覆蓋它而實(shí)現(xiàn)的。
4.靈活性。它在應(yīng)用中體現(xiàn)了靈活多樣的操作,提高了使用效率。
5.簡(jiǎn)化性。多態(tài)簡(jiǎn)化了對(duì)應(yīng)用軟件的代碼編寫和修改過(guò)程,尤其在處理大量對(duì)象的運(yùn)算和操作時(shí),這個(gè)特點(diǎn)尤為突出和重要。值得注意的是,多態(tài)并不能夠解決提高執(zhí)行速度的問(wèn)題,因?yàn)樗趧?dòng)態(tài)裝載和地址引用,或稱動(dòng)態(tài)綁定。
java中多態(tài)是什么意思?
什么是多態(tài)
1.面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài)。從一定角度來(lái)看,封裝和繼承幾乎都是為多態(tài)而準(zhǔn)備的。這是我們最后一個(gè)概念,也是最重要的知識(shí)點(diǎn)。
2.多態(tài)的定義:指允許不同類的對(duì)象對(duì)同一消息做出響應(yīng)。即同一消息可以根據(jù)發(fā)送對(duì)象的不同而采用多種不同的行為方式。(發(fā)送消息就是函數(shù)調(diào)用)
3.實(shí)現(xiàn)多態(tài)的技術(shù)稱為:動(dòng)態(tài)綁定(dynamic binding),是指在執(zhí)行期間判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法。
4.多態(tài)的作用:消除類型之間的耦合關(guān)系。
5.現(xiàn)實(shí)中,關(guān)于多態(tài)的例子不勝枚舉。
下面是多態(tài)存在的三個(gè)必要條件,要求大家做夢(mèng)時(shí)都能背出來(lái)!
多態(tài)存在的三個(gè)必要條件
一、要有繼承;
二、要有重寫;
三、父類引用指向子類對(duì)象。
多態(tài)的好處:
1.可替換性(substitutability)。多態(tài)對(duì)已存在代碼具有可替換性。例如,多態(tài)對(duì)圓Circle類工作,對(duì)其他任何圓形幾何體,如圓環(huán),也同樣工作。
2.可擴(kuò)充性(extensibility)。多態(tài)對(duì)代碼具有可擴(kuò)充性。增加新的子類不影響已存在類的多態(tài)性、繼承性,以及其他特性的運(yùn)行和操作。實(shí)際上新加子類更容易獲得多態(tài)功能。例如,在實(shí)現(xiàn)了圓錐、半圓錐以及半球體的多態(tài)基礎(chǔ)上,很容易增添球體類的多態(tài)性。
3.接口性(interface-ability)。多態(tài)是超類通過(guò)方法簽名,向子類提供了一個(gè)共同接口,由子類來(lái)完善或者覆蓋它而實(shí)現(xiàn)的。如圖8.3 所示。圖中超類Shape規(guī)定了兩個(gè)實(shí)現(xiàn)多態(tài)的接口方法,computeArea()以及computeVolume()。子類,如Circle和Sphere為了實(shí)現(xiàn)多態(tài),完善或者覆蓋這兩個(gè)接口方法。
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)尤為突出和重要。
在java中什么是多態(tài)。。 什么時(shí)候用多態(tài)
多態(tài),顧名思義就是具有很多種形態(tài),你可以聯(lián)想到一種物質(zhì)有很多種狀態(tài)、形態(tài),例如水,有氣態(tài)、液態(tài)、固態(tài),然后回歸到編程,假如我們需要編程來(lái)實(shí)現(xiàn)對(duì)水的質(zhì)量進(jìn)行計(jì)算,在假設(shè)質(zhì)量=密度*體積。可是怎么樣才能把所有形態(tài)、狀態(tài)的水都能計(jì)算出來(lái),這是就要分不同種情況了,假設(shè)是氣態(tài),這樣就跟壓強(qiáng)(假設(shè)的)有關(guān)系了,所以成員方法參數(shù)為壓強(qiáng)、體積、密度。而液態(tài)的就有可能跟溫度(假設(shè)的)關(guān)系比較大,所以成員方法中的參數(shù)為溫度、體積、密度。而固態(tài)跟溫度和壓強(qiáng)(假設(shè)的啦)關(guān)系不大,那么成員方法的參數(shù)為體積、密度。這樣計(jì)算水的質(zhì)量就有3種計(jì)算公式了,雖然是不同的3條公式,但是他們殊途同歸,最后都是求質(zhì)量。
綜上,多態(tài)就是為了解決同一問(wèn)題的不同解決方式。使用前提就是一個(gè)對(duì)象(類)有多種情況,然后分情況進(jìn)行解決。
多態(tài)在java中的意義是什么
多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng),多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性,多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。
多態(tài)有兩種表現(xiàn)形式:重載和覆蓋
1、首先說(shuō)重載(overload),是發(fā)生在同一類中,與什么父類子類、繼承毫無(wú)關(guān)系。
標(biāo)識(shí)一個(gè)函數(shù)除了函數(shù)名外,還有函數(shù)的參數(shù)(個(gè)數(shù)和類型),也就是說(shuō),一個(gè)類中可以有兩個(gè)或更多的函數(shù),叫同一個(gè)名字而他們的參數(shù)不同。
他們之間毫無(wú)關(guān)系,是不同的函數(shù),只是可能他們的功能類似,所以才命名一樣,增加可讀性,僅此而已!
2、再說(shuō)覆蓋(override),是發(fā)生在子類中,也就是說(shuō)必須有繼承的情況下才有覆蓋發(fā)生。
繼承一個(gè)類,也就有了父類了全部方法,如果你感到哪個(gè)方法不爽,功能要變,那就把那個(gè)函數(shù)在子類中重新實(shí)現(xiàn)一遍。
這樣再調(diào)用這個(gè)方法的時(shí)候,就是執(zhí)行子類中的過(guò)程了,父類中的函數(shù)就被覆蓋了。
當(dāng)前名稱:java多態(tài)簡(jiǎn)化了代碼嗎 多態(tài)有助于簡(jiǎn)化代碼量
鏈接地址:http://www.ef60e0e.cn/article/dodieij.html