亚洲色影视在线播放_国产一区+欧美+综合_久久精品少妇视频_制服丝袜国产网站

學(xué)習(xí)方法

方法重載與覆蓋的區(qū)別

時(shí)間:2022-11-04 08:47:01 梓薇 學(xué)習(xí)方法 我要投稿
  • 相關(guān)推薦

方法重載與覆蓋的區(qū)別

  在平常開(kāi)發(fā)工作中,經(jīng)常會(huì)用到方法重寫(xiě)和方法重載。方法重寫(xiě)和方法重載的區(qū)別,在面試中也會(huì)經(jīng)常被問(wèn)到,那么具體有什么區(qū)別呢?下面是小編幫大家整理的方法重載與覆蓋的區(qū)別,供大家參考借鑒,希望可以幫助到有需要的朋友。

  方法重載與覆蓋的區(qū)別 篇1

  方法覆蓋(重寫(xiě))和方法重載具有以下相同點(diǎn):

  ·都要求方法同名。

  ·都可以用于抽象方法和非抽象方法之間。

  方法覆蓋和方法重載具有以下不同點(diǎn):

  ·方法覆蓋要求參數(shù)簽名必須一致,而方法重載要求參數(shù)簽名必須不一致。

  · 方法覆蓋要求返回類(lèi)型必須一致,而方法重載對(duì)此不做限制。

  ·方法覆蓋只能用于子類(lèi)覆蓋父類(lèi)的方法,方法重載用于同一個(gè)類(lèi)的所有方法(包括從父類(lèi)中繼承而來(lái)的方法)。

  ·方法覆蓋對(duì)方法的.訪(fǎng)問(wèn)權(quán)限和拋出的異常有特殊的要求,而方法重載在這方面沒(méi)有任何限制。

  ·父類(lèi)的一個(gè)方法只能被子類(lèi)覆蓋一次,而一個(gè)方法在所在的類(lèi)中可以被重載多次

  方法重載與覆蓋的區(qū)別 篇2

  一、重載和覆蓋

  多態(tài)性也是面向?qū)ο蠓椒ǖ囊粋(gè)重要特性。多態(tài)性是指在在程序中出現(xiàn)的"重名"現(xiàn)象,即在一個(gè)程序中相同的名字可以表示不同的實(shí)現(xiàn)。

  在JAVA中,多態(tài)性主要表現(xiàn)在如下兩個(gè)方面:

  (1)方法重載。通常指在同一個(gè)類(lèi)中,相同的方法名對(duì)應(yīng)著不同的方法實(shí)現(xiàn),但是方法的參數(shù)不同。

  (2)成員覆蓋。通常指在不同類(lèi)(父類(lèi)和子類(lèi))中,允許有相同的變量名,但是數(shù)據(jù)類(lèi)型不同;也允許有相同的方法名,但是對(duì)應(yīng)的方法實(shí)現(xiàn)不同。

  在重載的情況下,同一類(lèi)中具有相同的名字的方法。如何選擇它的方法體呢?不能使用類(lèi)名來(lái)區(qū)分,通常采用不同的方法形參表,區(qū)分重載要求形參在類(lèi)型,個(gè)數(shù)和順序的不同,在定義重載方法時(shí),應(yīng)在方法的形參的類(lèi)型,個(gè)數(shù)和順序有所不同,以便在選擇時(shí)能夠區(qū)別開(kāi)來(lái)。

  在覆蓋的'情況下,同名的方法存在于不同的類(lèi)中,在調(diào)用方法只要指明其方法所歸屬的類(lèi)名就可以了。

  二、重載和覆蓋的區(qū)別

  在同一個(gè)類(lèi)中方法成員的名稱(chēng)相同,但參數(shù)的類(lèi)型和個(gè)數(shù)不同,這稱(chēng)為重載。

  在存在繼承關(guān)系的兩個(gè)話(huà),子類(lèi)與父類(lèi)的方法成員名稱(chēng)相同、參數(shù)的類(lèi)型和個(gè)數(shù)相同的話(huà),子類(lèi)的方法覆蓋父類(lèi)的方法,這稱(chēng)為覆蓋。

  方法重載與覆蓋的區(qū)別 篇3

  方法重載(Overload)是指在一個(gè)java類(lèi)的定義中,可以定義多個(gè)相同名字的方法,那么只需要這些方法的參數(shù)不同就可以,這個(gè)就叫做方法重載。

  方法重載概括成一句話(huà)就是同名不同參。同名是指方法名相同,不同參是指參數(shù)個(gè)數(shù)不同,參數(shù)的類(lèi)型不同(其中在參數(shù)類(lèi)型不同時(shí),參數(shù)的順序不同也可以),

  方法重載只和方法名和方法參數(shù)有關(guān),和方法的參數(shù)名字以及方法的返回值無(wú)關(guān),

  其中方法的參數(shù)名字以及方法的返回值與方法重載無(wú)關(guān)。

  方法重寫(xiě)(Override)是指在子類(lèi)中定義了一個(gè)方法,并且這個(gè)方法的返回類(lèi)型,方法名以及方法參數(shù)類(lèi)型,參數(shù)個(gè)數(shù)與從父類(lèi)繼承過(guò)來(lái)的方法完全相同,那么我們就說(shuō)子類(lèi)這個(gè)方法重寫(xiě)了父類(lèi)的方法。

  其中子類(lèi)的'訪(fǎng)問(wèn)修飾符在重寫(xiě)這個(gè)方法時(shí)候不能必須大于或等于父類(lèi)的訪(fǎng)問(wèn)修飾符。

  如果父類(lèi)的方法有異常聲明,那么子類(lèi)中聲明拋出異常類(lèi)型不能比父類(lèi)的范圍廣。

  子類(lèi)一旦重寫(xiě)了父類(lèi)的方法,就會(huì)將父類(lèi)的這個(gè)方法隱藏或覆蓋,如果子類(lèi)對(duì)象調(diào)用這個(gè)方法,調(diào)用的是重寫(xiě)后的方法。那么想調(diào)用這個(gè)隱藏方法怎么辦呢?java中提供了super關(guān)鍵字來(lái)實(shí)現(xiàn)。

  通過(guò)上面對(duì)它們定義以及特點(diǎn)的理解,下面再來(lái)總結(jié)它們之間的區(qū)別。

  1.方法重載是發(fā)生一個(gè)類(lèi)當(dāng)中,而方法重寫(xiě)是發(fā)生在子類(lèi)和父類(lèi)之間,是在繼承下面發(fā)生的。

  2.方法重載能夠改變方法的返回值,而方法重寫(xiě)不可以。

  3.方法重載和方法重寫(xiě)都是java多態(tài)的一種體現(xiàn),區(qū)別在于方法重載是編譯時(shí)的多態(tài),而方法重寫(xiě)則是運(yùn)行時(shí)的多態(tài)。

  方法重載與覆蓋的區(qū)別 篇4

  一、方法重寫(xiě)(0veriding)

  在Java程序中,類(lèi)的繼承關(guān)系可以產(chǎn)生一個(gè)子類(lèi),子類(lèi)繼承父類(lèi),它具備了父類(lèi)所有的特征,繼承了父類(lèi)所有的方法和變量。

  子類(lèi)可以定義新的特征,當(dāng)子類(lèi)需要修改父類(lèi)的一些方法進(jìn)行擴(kuò)展,增大功能,程序設(shè)計(jì)者常常把這樣的一種操作方法稱(chēng)為重寫(xiě),也叫稱(chēng)為覆寫(xiě)或覆蓋。

  重寫(xiě)體現(xiàn)了Java優(yōu)越性,重寫(xiě)是建立在繼承關(guān)系上,它使語(yǔ)言結(jié)構(gòu)更加豐富。在Java中的繼承中,子類(lèi)既可以隱藏和訪(fǎng)問(wèn)父類(lèi)的方法,也可以覆蓋繼承父類(lèi)的方法。

  在Java中覆蓋繼承父類(lèi)的方法就是通過(guò)方法的重寫(xiě)來(lái)實(shí)現(xiàn)的。所謂方法的重寫(xiě)是指子類(lèi)中的方法與父類(lèi)中繼承的方法有完全相同的返回值類(lèi)型、方法名、參數(shù)個(gè)數(shù)以及參數(shù)類(lèi)型。

  這樣,就可以實(shí)現(xiàn)對(duì)父類(lèi)方法的覆蓋。如果子類(lèi)將父類(lèi)中的方法重寫(xiě)了,調(diào)用的時(shí)候肯定是調(diào)用被重寫(xiě)過(guò)的方法,那么如果現(xiàn)在一定要調(diào)用父類(lèi)中的方法該怎么辦呢?

  此時(shí),通過(guò)使用super關(guān)鍵就可以實(shí)現(xiàn)這個(gè)功能,super關(guān)鍵字可以從子類(lèi)訪(fǎng)問(wèn)父類(lèi)中的內(nèi)容,如果要訪(fǎng)問(wèn)被重寫(xiě)過(guò)的方法,使用“super.方法名(參數(shù)列表)”的形式調(diào)用。

  如果要使用super關(guān)鍵字不一定非要在方法重寫(xiě)之后使用,也可以明確地表示某個(gè)方法是從父類(lèi)中繼承而來(lái)的。使用super只是更加明確的說(shuō),要從父類(lèi)中查找,就不在子類(lèi)查找了。

  二、重寫(xiě)規(guī)則

  在重寫(xiě)方法時(shí),需要遵循以下的規(guī)則:

  (一) 父類(lèi)方法的參數(shù)列表必須完全與被子類(lèi)重寫(xiě)的方法的參數(shù)列表相同,否則不能稱(chēng)其為重寫(xiě)而是重載。

  (二) 父類(lèi)的返回類(lèi)型必須與被子類(lèi)重寫(xiě)的方法返回類(lèi)型相同,否則不能稱(chēng)其為重寫(xiě)而是重載。..

  (三) Java中規(guī)定,被子類(lèi)重寫(xiě)的方法不能擁有比父類(lèi)方法更加嚴(yán)格的訪(fǎng)問(wèn)權(quán)限。編寫(xiě)過(guò)Java程序的人就知道,

  父類(lèi)中的方法并不是在任何情況下都可以重寫(xiě)的,當(dāng)父類(lèi)中方法的訪(fǎng)問(wèn)權(quán)限修飾符為private時(shí),該方法只能被自己的類(lèi)訪(fǎng)問(wèn),

  不能被外部的類(lèi)訪(fǎng)問(wèn),在子類(lèi)是不能被重寫(xiě)的。如果定義父類(lèi)的方法為public,在子類(lèi)定義為private,程序運(yùn)行時(shí)就會(huì)報(bào)錯(cuò)。

  (四) 由于父類(lèi)的訪(fǎng)問(wèn)權(quán)限修飾符的限制一定要大于被子類(lèi)重寫(xiě)方法的訪(fǎng)問(wèn)權(quán)限修飾符,而private權(quán)限最小。

  所以如果某一個(gè)方法在父類(lèi)中的訪(fǎng)問(wèn)權(quán)限是private,那么就不能在子類(lèi)中對(duì)其進(jìn)行重寫(xiě)。如果重新定義,也只是定義了一個(gè)新的方法,不會(huì)達(dá)到重寫(xiě)的效果。

  (五) 在繼承過(guò)程中如果父類(lèi)當(dāng)中的方法拋出異常,那么在子類(lèi)中重寫(xiě)父類(lèi)的該方法時(shí),也要拋出異常,

  而且拋出的異常不能多于父類(lèi)中拋出的異常(可以等于父類(lèi)中拋出的異常)。換句話(huà)說(shuō),重寫(xiě)方法一定不能拋出新的檢查異常,

  或者比被重寫(xiě)方法聲明更加寬泛的檢查型異常。例如,父類(lèi)的一個(gè)方法申明了一個(gè)檢查異常IOException,在重寫(xiě)這個(gè)方法時(shí)就不能拋出Exception,

  只能拋出IOException的子類(lèi)異常,可以?huà)伋龇菣z查異常。同樣的道理,如果子類(lèi)中創(chuàng)建了一個(gè)成員變量,

  而該變量和父類(lèi)中的一個(gè)變量名稱(chēng)相同,稱(chēng)作變量重寫(xiě)或?qū)傩愿采w。但是此概念一般很少有人去研究它,因?yàn)橐饬x不大。

  三、方法重載(Overloading)

  方法重載是讓類(lèi)以統(tǒng)一的方式處理不同類(lèi)型數(shù)據(jù)的一種手段。調(diào)用方法時(shí)通過(guò)傳遞給它們的不同個(gè)數(shù)和類(lèi)型的參數(shù)來(lái)決定具體使用哪個(gè)方法,這就是多態(tài)性。

  所謂方法重載是指在一個(gè)類(lèi)中,多個(gè)方法的方法名相同,但是參數(shù)列表不同。參數(shù)列表不同指的`是參數(shù)個(gè)數(shù)、參數(shù)類(lèi)型或者參數(shù)的順序不同。

  方法的重載在實(shí)際應(yīng)用中也會(huì)經(jīng)常用到。不僅是一般的方法,構(gòu)造方法也可以重載。

  在方法重載時(shí),方法之間需要存在一定的聯(lián)系,因?yàn)檫@樣可以提高程序的可讀性,一般只重載功能相似的方法。

  重載是指我們可以定義一些名稱(chēng)相同的方法,通過(guò)定義不同的參數(shù)來(lái)區(qū)分這些方法,然后再調(diào)用時(shí),Java虛擬機(jī)就會(huì)根據(jù)不同的參數(shù)列表來(lái)選擇合適的方法執(zhí)行。也就是說(shuō),當(dāng)一個(gè)重載方法被調(diào)用時(shí),Java用參數(shù)的類(lèi)型或個(gè)數(shù)來(lái)決定實(shí)際調(diào)用的重載方法。因此,每個(gè)重載方法的參數(shù)的類(lèi)型或個(gè)數(shù)必須是不同。

  雖然每個(gè)重載方法可以有不同的返回類(lèi)型,但返回類(lèi)型并不足以區(qū)分所使用的是哪個(gè)方法。

  當(dāng)Java調(diào)用一個(gè)重載方法是,參數(shù)與調(diào)用參數(shù)匹配的方法被執(zhí)行。在使用重載要注意以下的幾點(diǎn):

  1.在使用重載時(shí)只能通過(guò)不同的參數(shù)列表,必須具有不同的參數(shù)列表。

  2.不能通過(guò)訪(fǎng)問(wèn)權(quán)限、返回類(lèi)型、拋出的異常進(jìn)行重載。

  3.方法的異常類(lèi)型和數(shù)目不會(huì)對(duì)重載造成影響。

  4.可以有不同的返回類(lèi)型,只要參數(shù)列表不同就可以了。

  5.可以有不同的訪(fǎng)問(wèn)修飾符。

  6.可以?huà)伋霾煌漠惓!?/p>

  四、方法重寫(xiě)與方法重載的區(qū)別

  方法重寫(xiě)(方法覆蓋)

  概念:子類(lèi)繼承父類(lèi)中的方法,想在原有的基礎(chǔ)上作一定的修改。

  格式特點(diǎn):

  1.方法名、參數(shù)列表必須完全一致

  2.返回類(lèi)型可以相同,也可以不同,不同必須是原來(lái)返回類(lèi)型的子類(lèi)型(可隱式轉(zhuǎn)換即可)JAVA近期版本的新特性,在之前子類(lèi)返回值類(lèi)型必須和父類(lèi)返回值類(lèi)型保持一致

  2.子類(lèi)拋出的異常下不能超過(guò)父類(lèi)相應(yīng)方法拋出的異常(子類(lèi)異常不能大于父類(lèi)異常)

  3.子類(lèi)方法的訪(fǎng)問(wèn)級(jí)別不能低于父類(lèi)相應(yīng)方法的訪(fǎng)問(wèn)級(jí)別(子類(lèi)訪(fǎng)問(wèn)級(jí)別不能低于父類(lèi)訪(fǎng)問(wèn)級(jí)別)

  方法重載

  概念:在同一個(gè)類(lèi)中,允許存在一個(gè)以上的同名函數(shù),只要它們的參數(shù)個(gè)數(shù)或者參數(shù)類(lèi)型不同即可。

  格式特點(diǎn):

  1.方法名相同。

  2.方法的參數(shù)表必須不同

  如果參數(shù)個(gè)數(shù)不同,就不管它的參數(shù)類(lèi)型了!

  如果參數(shù)個(gè)數(shù)相同,那么參數(shù)的類(lèi)型必須不同。

  3.方法的返回類(lèi)型、修飾符可以相同,也可不同。

【方法重載與覆蓋的區(qū)別】相關(guān)文章:

方法重載和方法重寫(xiě)的概念和區(qū)別09-06

方法重載的條件09-23

十個(gè)全覆蓋調(diào)研報(bào)告11-29

關(guān)于十個(gè)全覆蓋的征文12-26

十個(gè)全覆蓋征文7篇12-26

方案與計(jì)劃的區(qū)別03-31

條例與細(xì)則的區(qū)別12-20

方案與辦法的區(qū)別03-21

中班安全當(dāng)冰雪覆蓋大地教案范文(通用7篇)12-08