重載與重寫(xiě)的區(qū)別
重載與重寫(xiě)的區(qū)別
重載與重寫(xiě)其實(shí)是兩個(gè)不同的概念,對(duì)于學(xué)習(xí)java的同學(xué)相信不易混淆。下面是學(xué)習(xí)啦小編為大家準(zhǔn)備的重載與重寫(xiě)的區(qū)別,希望大家喜歡!
重載的定義
(1) 方法重載是讓類(lèi)以統(tǒng)一的方式處理不同類(lèi)型數(shù)據(jù)的一種手段。多個(gè)同名函數(shù)同時(shí)存在,具有不同的參數(shù)個(gè)數(shù)/類(lèi)型。
重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。
(2) Java的方法重載,就是在類(lèi)中可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。
調(diào)用方法時(shí)通過(guò)傳遞給它們的不同參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型來(lái)決定具體使用哪個(gè)方法, 這就是多態(tài)性。
(3) 重載的時(shí)候,方法名要一樣,但是參數(shù)類(lèi)型和個(gè)數(shù)不一樣,返回值類(lèi)型可以相同也可以不相同。無(wú)法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。
重寫(xiě)的定義
(1) 父類(lèi)與子類(lèi)之間的多態(tài)性,對(duì)父類(lèi)的函數(shù)進(jìn)行重新定義。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。在Java中,子類(lèi)可繼承父類(lèi)中的方法,而不需要重新編寫(xiě)相同的方法。
但有時(shí)子類(lèi)并不想原封不動(dòng)地繼承父類(lèi)的方法,而是想作一定的修改,這就需要采用方法的重寫(xiě)。
方法重寫(xiě)又稱方法覆蓋。
(2)若子類(lèi)中的方法與父類(lèi)中的某一方法具有相同的方法名、返回類(lèi)型和參數(shù)表,則新方法將覆蓋原有的方法。
如需父類(lèi)中原有的方法,可使用super關(guān)鍵字,該關(guān)鍵字引用了當(dāng)前類(lèi)的父類(lèi)。
(3)子類(lèi)函數(shù)的訪問(wèn)修飾權(quán)限不能少于父類(lèi)的;
重載與重寫(xiě)的區(qū)別
重寫(xiě)多態(tài)性起作用,對(duì)調(diào)用被重載過(guò)的方法可以大大減少代碼的輸入量,同一個(gè)方法名只要往里面?zhèn)鬟f不同的參數(shù)就可以擁有不同的功能或返回值。
用好重寫(xiě)和重載可以設(shè)計(jì)一個(gè)結(jié)構(gòu)清晰而簡(jiǎn)潔的類(lèi),可以說(shuō)重寫(xiě)和重載在編寫(xiě)代碼過(guò)程中的作用非同一般.
看了“重載與重寫(xiě)的區(qū)別”的人還看了: