0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

java中的重載和重寫的區(qū)別

科技綠洲 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2023-11-17 17:13 ? 次閱讀

Java中的重載(Overload)和重寫(Override)是兩個(gè)重要的面向?qū)ο?a href="http://www.ttokpm.com/v/tag/1315/" target="_blank">編程概念,盡管它們在使用和功能上有所不同,但它們都與方法和多態(tài)性相關(guān)。本文將全面介紹重載和重寫的概念、語法規(guī)則、使用場景和示例,詳細(xì)解釋它們之間的區(qū)別以及如何在實(shí)際應(yīng)用中正確使用它們。

  1. 重載(Overload)的概念和語法規(guī)則:

重載(Overload)是指在一個(gè)類中可以定義多個(gè)具有相同名稱但參數(shù)列表不同(包括參數(shù)類型、參數(shù)個(gè)數(shù)、參數(shù)順序)的方法。重載方法可以通過返回值不同進(jìn)行區(qū)分,但僅返回類型的不同是不能作為區(qū)分的依據(jù)的。

在Java中,重載方法必須滿足以下條件:

  • 方法名必須相同。
  • 方法的參數(shù)列表必須不同,可以是參數(shù)的類型不同、參數(shù)的個(gè)數(shù)不同或兩者都不同。
  • 方法的返回值可以相同,也可以不同。

示例代碼如下:

public class MyClass {
public int add(int a, int b) {
return a + b;
}

public int add(int a, int b, int c) {
return a + b + c;
}

public double add(double a, double b) {
return a + b;
}
}

在上述示例中,add方法被重載了三次,分別接受兩個(gè)int類型參數(shù)、三個(gè)int類型參數(shù)和兩個(gè)double類型參數(shù)。這樣,可以根據(jù)不同的參數(shù)個(gè)數(shù)調(diào)用不同的方法,以實(shí)現(xiàn)方法的多樣化使用。

  1. 重載(Overload)的使用場景:

重載通常用于實(shí)現(xiàn)相似功能但參數(shù)不同的方法,常見的使用場景有:

  • 參數(shù)個(gè)數(shù)不同的構(gòu)造方法:通過不同的參數(shù)個(gè)數(shù)來創(chuàng)建對象。
  • 參數(shù)類型不同的方法:接受不同類型的參數(shù),進(jìn)行相應(yīng)的計(jì)算或操作。
  • 提供默認(rèn)參數(shù):為方法設(shè)置默認(rèn)值,簡化方法調(diào)用。

重載方法的好處是可以增加代碼的可讀性和可維護(hù)性。通過重載方法,我們可以使用統(tǒng)一的方法名來表示一組相關(guān)的操作,避免了為每個(gè)操作定義不同的方法名,使代碼更加清晰明了。

  1. 重寫(Override)的概念和語法規(guī)則:

重寫(Override)是指子類重寫了父類中具有相同名稱、參數(shù)列表和返回類型的方法。重寫方法用于在子類中重新實(shí)現(xiàn)父類的方法,以滿足子類的特定需求。

在Java中,重寫方法必須滿足以下條件:

  • 方法名、參數(shù)列表和返回類型必須與父類中的方法一致。
  • 重寫方法的訪問修飾符可以比父類中的方法更 寬松,不可更嚴(yán)格。例如,父類中的方法是public,則子類中可以是publicprotected或默認(rèn)訪問級(jí)別,但不能是private
  • 重寫方法的異常類型可以與父類方法相同或更少,不可更多。即子類方法聲明的異常類型可以是父類方法異常類型的子類,或不聲明異常。

示例代碼如下:

public class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}

public class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}

在上述示例中,Animal類中的sound方法被Dog類重寫。當(dāng)調(diào)用Dog類對象的sound方法時(shí),將輸出"Dog barks"。

  1. 重寫(Override)的使用場景:

重寫通常用于子類需要改變或拓展父類方法的行為的情況。常見的使用場景有:

  • 子類需要覆蓋父類的方法來實(shí)現(xiàn)特定的功能。
  • 子類需要改變父類方法的行為,即增加、修改或刪除父類的實(shí)現(xiàn)。

通過重寫方法,可以在子類中實(shí)現(xiàn)對父類方法的定制化擴(kuò)展。這樣,無需重復(fù)編寫相同的代碼,可以直接使用父類的方法,并在子類中根據(jù)自己的需求進(jìn)行改造。

  1. 重載和重寫的區(qū)別:

重載(Overload)和重寫(Override)雖然都與方法有關(guān),但它們在功能和使用上有很大的差異。

  • 區(qū)別1:定義方式不同
  • 重載:在一個(gè)類中定義多個(gè)具有相同名稱的方法,但參數(shù)列表不同。
  • 重寫:在子類中重新實(shí)現(xiàn)父類中具有相同名稱和參數(shù)列表的方法。
  • 區(qū)別2:目的不同
  • 重載:提供不同的方法來處理相似的操作,根據(jù)不同的參數(shù)個(gè)數(shù)或類型進(jìn)行區(qū)分。
  • 重寫:子類通過重寫父類方法,實(shí)現(xiàn)對方法的定制化擴(kuò)展或改變父類方法的行為。
  • 區(qū)別3:調(diào)用方式不同
  • 重載:根據(jù)方法的參數(shù)個(gè)數(shù)或類型的不同,編譯器根據(jù)方法調(diào)用時(shí)提供的參數(shù),選擇調(diào)用對應(yīng)的重載方法。
  • 重寫:通過子類對象調(diào)用重寫方法時(shí),根據(jù)對象的實(shí)際類型來選擇調(diào)用方法。
  • 區(qū)別4:語法規(guī)則不同
  • 重載:參數(shù)列表必須不同,方法名相同,返回值可以相同也可以不同。
  • 重寫:參數(shù)列表、方法名和返回值必須與父類方法一致。

通過重載和重寫,我們可以使用一個(gè)名稱表示一組相關(guān)的操作或方法,提高代碼的可讀性和可維護(hù)性。在實(shí)際應(yīng)用中,正確理解和運(yùn)用重載和重寫對于面向?qū)ο缶幊痰脑O(shè)計(jì)和實(shí)現(xiàn)非常重要。在編寫代碼時(shí),需要根據(jù)具體的需求,選擇合適的方式來實(shí)現(xiàn)方法的多樣化使用和擴(kuò)展功能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104096
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1658

    瀏覽量

    31876
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3521

    瀏覽量

    93266
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67765
收藏 人收藏

    評論

    相關(guān)推薦

    JAVA和C++區(qū)別

    。JAVA里無用內(nèi)存回收程序是以線程方式在后臺(tái)運(yùn)行的,利用空閑時(shí)間工作。 5.操作符重載 Java不支持操作符重載。操作符重載被認(rèn)為是c十十
    發(fā)表于 04-11 15:19

    JAVA和C++區(qū)別

    JAVA里無用內(nèi)存回收程序是以線程方式在后臺(tái)運(yùn)行的,利用空閑時(shí)間工作。 5.操作符重載 Java不支持操作符重載。操作符重載被認(rèn)為是c十十
    發(fā)表于 10-10 14:50

    視頻教程:Java七大外企經(jīng)典面試套路之基礎(chǔ)篇

    與Integer的區(qū)別第3節(jié) 以數(shù)據(jù)結(jié)構(gòu)挖掘集合面試考點(diǎn)第4節(jié) 經(jīng)典面試題重載重寫第5節(jié) 如何回答面試官提問Java的接口與抽象類第6節(jié) 面試題重中之重 HashMap實(shí)現(xiàn)原理第7
    發(fā)表于 06-14 15:47

    Java Killer系列之Java經(jīng)典面試套路講解

    集合面試考點(diǎn)四、 經(jīng)典面試題重載重寫五、 如何回答面試官提問Java的接口與抽象類六、 面試題重中之重 HashMap實(shí)現(xiàn)原理七、 面試熱點(diǎn)設(shè)計(jì)模式之單例模式 課程地址:https://ke.qq.com/course/214
    發(fā)表于 06-21 15:48

    Java Killer系列之Java經(jīng)典面試套路講解

    、 String Stringbuffer Stringbuilder 深度解析二、 完美回答面試題Int 與Integer的區(qū)別三、 以數(shù)據(jù)結(jié)構(gòu)挖掘集合面試考點(diǎn)四、 經(jīng)典面試題重載重寫五、 如何回答面試官提問
    發(fā)表于 06-22 15:16

    干貨!java經(jīng)典面試套路精講視頻教程免費(fèi)分享!

    解析2、 完美回答面試題Int 與Integer的區(qū)別3、 以數(shù)據(jù)結(jié)構(gòu)挖掘集合面試考點(diǎn)4、 經(jīng)典面試題重載重寫5、 如何回答面試官提問Java的接口與抽象類6、 面試題重中之重 Ha
    發(fā)表于 06-23 16:21

    java基礎(chǔ):Java七大外企經(jīng)典面試精講視頻

    、 以數(shù)據(jù)結(jié)構(gòu)挖掘集合面試考點(diǎn)4、 經(jīng)典面試題重載重寫5、 如何回答面試官提問Java的接口與抽象類6、 面試題重中之重 HashMap實(shí)現(xiàn)原理7、 面試熱點(diǎn)設(shè)計(jì)模式之單例模式課程地址:https://ke.qq.com/co
    發(fā)表于 06-29 15:00

    java面試考點(diǎn)精講視頻教程!

    Stringbuffer Stringbuilder 深度解析完美回答面試題Int 與Integer的區(qū)別以數(shù)據(jù)結(jié)構(gòu)挖掘集合面試考點(diǎn)經(jīng)典面試題重載重寫如何回答面試官提問Java的接
    發(fā)表于 07-01 15:26

    java方法重載詳解

    Java重載是指Java允許在一個(gè)類,存在多個(gè)擁有相同的名字,但參數(shù)不同的方法,編譯器會(huì)根據(jù)實(shí)際情況挑選出正確的方法,如果編譯器找不到匹配的參數(shù)或者找出多個(gè)可能的匹配就會(huì)產(chǎn)生編譯時(shí)錯(cuò)
    發(fā)表于 03-19 16:14

    函數(shù)重載隱藏覆蓋的區(qū)別

    `1.1 覆蓋隱藏重載重載,隱藏(重定義),覆蓋(重寫)—這幾個(gè)名詞看著好像很像,不過其實(shí)一樣都不一樣??!1.1.1 重載:(1)概念:在同一個(gè)作用域內(nèi);函數(shù)名相同,參數(shù)列表不同(參數(shù)個(gè)數(shù)不同,或者
    發(fā)表于 05-11 09:33

    Java和C++的區(qū)別

    。JAVA里無用內(nèi)存回收程序是以線程方式在后臺(tái)運(yùn)行的,利用空閑時(shí)間工作。 5.操作符重載 Java不支持操作符重載。操作符重載被認(rèn)為是c十十
    發(fā)表于 09-13 16:02

    漫談java重載重寫的不同

    多態(tài)性的一種表現(xiàn)。 (2) Java的方法重載,就是在類可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。 調(diào)用方法時(shí)通過傳遞給它們的不同參數(shù)個(gè)數(shù)和參數(shù)類型來決定具體使用哪個(gè)方法, 這就是多態(tài)性。 (3)
    發(fā)表于 09-26 17:56 ?0次下載

    Java重載重寫區(qū)別及范例詳解

    重載 overloading 1) 方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個(gè)同名函數(shù)同時(shí)存在,具有不同的參數(shù)個(gè)數(shù)/類型。重載是一個(gè)類多態(tài)性的一種表現(xiàn)。 2)
    發(fā)表于 12-08 10:38 ?1228次閱讀

    C++:重載、重定義和重寫的概念和區(qū)分

    在C++我們經(jīng)常會(huì)遇見“重載、重定義、重寫”的概念,三個(gè)概念名字很像,很容易混淆,今天我們對三者進(jìn)行一個(gè)區(qū)分。
    的頭像 發(fā)表于 06-29 11:33 ?5397次閱讀

    Python 重載重寫的概念

    ,隨后不久我便意識(shí)到犯下了一個(gè)錯(cuò)誤。 我們先來看看重載重寫的概念: 重載重載的條件如下: 1.一個(gè)類里面 2.方法名字相同 3.參數(shù)不同 而參數(shù)不同可分為:參數(shù)類型不同,參數(shù)個(gè)數(shù)
    的頭像 發(fā)表于 11-03 15:13 ?466次閱讀
    Python <b class='flag-5'>重載</b>與<b class='flag-5'>重寫</b>的概念