最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎之重載(Overload)與重寫(Override)詳解

 更新時間:2021年04月30日 09:42:38   作者:又是編程小白的一天  
這篇文章主要介紹了Java基礎之重載(Overload)與重寫(Override)詳解,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下

一、重載(Overload)

重載是在一個類里面,方法名字相同,而參數不同。返回類型可以相同也可以不同。

每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。

最常用的地方就是構造器的重載。

重載的好處:

1.不用為了對不同的參數類型或參數個數,而寫多個函數。

2.多個函數用同一個名字,但參數表,即參數的個數或(和)數據類型可以不同,調用的時候,雖然方法名字相同,但根據參數表可以自動調用對應的函數。

3.重載的最直接作用是方便了程序員可以根據不同的參數個數,順序,類型,自動匹配方法,減少寫過個函數名或方法名的重復步驟。

4.增加代碼可讀性,執(zhí)行同樣功能但具有不同參數類型的方法應該使用同樣的名字。

重載規(guī)則:

1.被重載的方法必須改變參數列表(參數個數或類型不一樣)。

2.被重載的方法可以改變返回類型。

3.被重載的方法可以改變訪問修飾符。

4.被重載的方法可以聲明新的或更廣的檢查異常。

5.方法能夠在同一個類中或者在一個子類中被重載。

6.無法以返回值類型作為重載函數的區(qū)分標準。

歧義調用:

public class TestMethodOverload {
    public static double max(double num1,double num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static int max(int num1,int num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static void main(String[] args) {
        System.out.println("The max of 3 and 4 is "+max(3,4));
        //調用max(int num1,int num2)方法
        System.out.println("The max of 3.0 and 4.0 is "+max(3.0,4.0));
        //調用max(double num1,double num2)方法
        System.out.println("The max of 3 and 4.0 is "+max(3,4.0));
        //調用max(double num1,double num2)方法,調用方法時實參值3會轉換為double型
    } 
}

調用max(3,4)時為什么不用max(double num1,double num2)方法呢?

​ 調用方法時,有時會有一個或多個可能的匹配,java編譯器會尋找最精確匹配的方法。方法max (int num1,int num2)比max(double num1,double num2)更精確。

有時調用一個方法時,會有兩個或更多可能的匹配,但是編譯器無法判斷哪個是最精確的匹配。這稱為歧義調用(ambiguous invocation)。歧義調用會產生一個編譯錯誤。

public class TestMethodOverload {
    public static double max(double num1,int num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static double max(int num1,double num2) {
        if(num1 > num2)
            return num1;
        else
            return num2;
    }
    public static void main(String[] args) {
        System.out.println("The max of 3 and 4 is "+max(3,4));
        //無法判斷用哪個方法,編譯錯誤
    } 
}

二、重寫(Override)

重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變

重寫的好處在于子類可以根據需要,定義特定于自己的行為。 也就是說子類能夠根據需要實現父類的方法。

重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。

class People{
    public void speak(){
        Systom.out.println("可以說話");
    }
}

class ChinaPeople extends People{
    public void speak(){
        System.out.println("可以說中文");
    }
    public void color(){
        System.out.println("皮膚為黃色");
    }
}

public class Test{
    public static void main(String[] args){
        People a = new People();//People對象
    	People b = new ChinaPeople();//ChinaPeople對象
    
   		a.speak();//執(zhí)行People類的方法
    	b.speak();//執(zhí)行ChinaPeople類的方法
    	b.color(); 
    }
}

方法的重寫規(guī)則:

1.參數列表與被重寫方法的參數列表必須完全相同。

2.返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的派生類。

3.訪問權限不能比父類中被重寫的方法的訪問權限更低。

4.父類的成員方法只能被它的子類重寫。

5.聲明為 final 的方法不能被重寫。

6.聲明為 static 的方法不能被重寫,但是能夠被再次聲明??捎?父類名.靜態(tài)方法名 來調用父類的static方法。

7.子類和父類在同一個包中,那么子類可以重寫父類除了聲明為 private 和 final 的所有方法。

8.子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為 public 和 protected 的非 final 方法。

9.重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。(如果想在子類中拋出某強制性異常(編譯型異常),父類中必須拋出這個異?;蚋鼜V的異常)

10.構造方法不能被重寫。

11.如果不能繼承一個類,則不能重寫該類的方法。

super關鍵字:

當需要在子類中調用父類的被重寫方法時,要使用 super 關鍵字。

class People{
    public void speak(){
        Systom.out.println("可以說話");
    }
}

class ChinaPeople extends People{
    public void speak(){
        System.out.println("可以說中文");
    }
}

public class Test{
    public static void main(String[] args){
    	People a = new ChinaPeople();//ChinaPeople對象
    
   		super.speak();//執(zhí)行People類的方法
    	b.speak();//執(zhí)行ChinaPeople類的方法
    }
}

三、重寫與重載之間的區(qū)別

區(qū)別點 重載方法 重寫方法
參數列表 必須修改 一定不能修改
返回類型 可以修改 一定不能修改
異常 可以修改 可以減少或刪除,一定不能拋出新的或者更廣的異常
訪問 可以修改 一定不能做更嚴格的限制(可以降低限制)

四、總結

方法的重寫(Override)和重載(Overload)是java多態(tài)性的不同表現,重寫是父類與子類之間多態(tài)性的一種表現,重載可以理解成多態(tài)的具體表現形式。

1.方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱為方法的重載(Overload)。

2.方法重寫是在子類存在方法與父類的方法的名字相同,而且參數的個數與類型一樣,返回值也一樣的方法,就稱為重寫(Override)。

3.方法重載是一個類的多態(tài)性表現,而方法重寫是子類與父類的一種多態(tài)性表現。

到此這篇關于Java基礎之重載(Overload)與重寫(Override)詳解的文章就介紹到這了,更多相關Java重載與重寫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現蘿卜勇者游戲的示例代碼

    Java實現蘿卜勇者游戲的示例代碼

    《蘿卜勇者》是由國內玩家自制的一款獨立游戲,玩家扮演蘿卜勇士闖關,打敗各種邪惡的敵人,獲得最后的勝利。本文將利用Java實現這一游戲,感興趣的可以了解一下
    2022-02-02
  • IDEA如何開啟并配置services窗口

    IDEA如何開啟并配置services窗口

    在使用IntelliJ IDEA時,可能會遇到Services窗口不自動彈出的情況,本文介紹了如何手動開啟Services窗口的簡單步驟,首先,通過點擊菜單欄中的“視圖”->“工具窗口”->“服務”,或使用快捷鍵Alt+F8(注意快捷鍵可能存在沖突)來打開Services窗口
    2024-10-10
  • 詳解SSM框架下結合log4j、slf4j打印日志

    詳解SSM框架下結合log4j、slf4j打印日志

    本篇文章主要介紹了詳解SSM框架下結合log4j、slf4j打印日志,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • JDK下載與安裝超詳細步驟大全

    JDK下載與安裝超詳細步驟大全

    學習JAVA必須得安裝一下JDK(java development kit java開發(fā)工具包),配置一下環(huán)境就可以學習JAVA了,下面這篇文章主要給大家介紹了關于JDK下載與安裝步驟的相關資料,需要的朋友可以參考下
    2022-08-08
  • Java并發(fā)應用之任務執(zhí)行分析

    Java并發(fā)應用之任務執(zhí)行分析

    這篇文章主要為大家詳細介紹了JavaJava并發(fā)應用編程中任務執(zhí)行分析的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-07-07
  • Java項目中實現使用traceId跟蹤請求全流程日志

    Java項目中實現使用traceId跟蹤請求全流程日志

    這篇文章主要介紹了Java項目中實現使用traceId跟蹤請求全流程日志方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java 大小寫最快轉換方式實例代碼

    Java 大小寫最快轉換方式實例代碼

    這篇文章主要介紹了Java 大小寫最快轉換方式實例代碼的相關資料,需要的朋友可以參考下
    2017-07-07
  • Java小項目之迷宮游戲的實現方法

    Java小項目之迷宮游戲的實現方法

    這篇文章主要給大家介紹了關于Java小項目之迷宮的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 如何在Maven項目中運行JUnit5測試用例實現

    如何在Maven項目中運行JUnit5測試用例實現

    這篇文章主要介紹了如何在Maven項目中運行JUnit5測試用例實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 解決springboot沒有啟動標識,啟動類也沒有啟動標識的問題

    解決springboot沒有啟動標識,啟動類也沒有啟動標識的問題

    這篇文章主要介紹了解決springboot沒有啟動標識,啟動類也沒有啟動標識的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

仙游县| 泽库县| 焦作市| 故城县| 镇平县| 达拉特旗| 济宁市| 甘泉县| 安丘市| 祁阳县| 潞城市| 鲁甸县| 礼泉县| 湖口县| 渭源县| 元朗区| 蒙城县| 杂多县| 桂阳县| 韶山市| 周至县| 行唐县| 延安市| 兰溪市| 赞皇县| 西城区| 防城港市| 香河县| 城市| 廊坊市| 亳州市| 延安市| 东方市| 石楼县| 漳州市| 辽中县| 夏河县| 紫金县| 钟山县| 田东县| 名山县|