欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Java如何正確地實(shí)現(xiàn)方法重載詳解

 更新時(shí)間:2023年05月10日 09:49:13   作者:一一哥Sun  
在一個(gè)類中,可以定義多個(gè)構(gòu)造方法,這叫做方法的重載!但是關(guān)于方法重載,具有有哪些要求和細(xì)節(jié)?在今天的這篇文章中,小編給大家詳細(xì)說說方法重載相關(guān)的內(nèi)容,需要的朋友可以參考下

一. 方法重載

1. 概念

所謂方法的重(chong)載(重復(fù)出現(xiàn)),就是指在一個(gè)類中可以有多個(gè)名稱相同但參數(shù)不同的方法, 不過方法重載與返回值的類型無關(guān)。在Java中,無論是普通方法,還是構(gòu)造方法,都可以進(jìn)行重載。我們在調(diào)用重載的方法時(shí),會(huì)根據(jù)傳遞的參數(shù)不同,來執(zhí)行不同的方法。

通過方法的重載,我們就可以把一系列功能相似,但參數(shù)不同的方法,用同一個(gè)方法名進(jìn)行定義。這樣就避免了出現(xiàn)繁多的方法名,如果我們每次新建一個(gè)方法,就取個(gè)新的方法名,就會(huì)降低程序的可讀性。使用同一個(gè)方法名稱,我們就很容易記住這些方法,使用起來就很方便靈活。

2. 要求

根據(jù)方法重載的概念可知,方法重載時(shí)有如下要求:

1. 同名不同參(參數(shù)類型、個(gè)數(shù)、順序);

2. 與返回值、訪問修飾符無關(guān)。

也就是說,方法重載時(shí),要求方法的名稱相同,但參數(shù)不同,只要參數(shù)的類型、個(gè)數(shù)、順序有一個(gè)地方不同即可。但方法的重載與返回值和使用的訪問修飾符沒有關(guān)系!

我們可以自己進(jìn)行重載方法的定義,當(dāng)然java源碼中也有大量的重載方法,比如我們常見的String類中就有,如下圖所示:

比如String字符串中就定義了多個(gè)indexOf()和lastIndexOf()重載方法,當(dāng)然也有其他的重載方法。這些方法名稱相同,但參數(shù)肯定不同,和返回值沒有關(guān)系!

說了這么多之后,接下來還是讓我們通過一些案例看看方法的重載怎么實(shí)現(xiàn)吧。

二. 代碼案例

1. 普通方法重載

接下來我們設(shè)計(jì)一個(gè)案例,用于比較兩個(gè)數(shù)字的大小。我們在比較兩個(gè)數(shù)值時(shí),數(shù)值的類型是不固定的,可能是兩個(gè)int類型的數(shù)值,也可能是兩個(gè)double類型的數(shù)值,也可能是兩個(gè)double、一個(gè)int類型的數(shù)值......在這種情況下,我們就可以使用方法的重載來實(shí)現(xiàn)數(shù)值之間的比較。具體實(shí)現(xiàn)代碼參考如下:

/**
 * @author 
 */
public class Demo01 {
    public static void main(String[] args) {
        Demo01 demo=new Demo01();
	int max01 = demo.max(10, 20);
	System.out.println("較大的整數(shù)是:"+max01);
		
	float max02 = demo.max(20.0f, 39.8f);
	System.out.println("較大的單精度數(shù)是:"+max02);
		
	double max03 = demo.max(22.88, 10.88);
	System.out.println("較大的雙精度數(shù)是:"+max03);

        double max04 = demo.max(44.88, 5);
	System.out.println("較大的雙精度數(shù)是:"+max04);
    }

    // 輸出較大的那個(gè)整數(shù)
    public int max(int a, int b) {
	// 采用三目運(yùn)算符進(jìn)行簡化判斷
	return a >= b ? a : b;
    }

    // 輸出較大的那個(gè)單精度數(shù)
    public float max(float a, float b) {
	// 采用三目運(yùn)算符進(jìn)行簡化判斷
	return a >= b ? a : b;
    }

    // 輸出較大的那個(gè)單精度數(shù)
    public double max(double a, double b) {
	// 采用三目運(yùn)算符進(jìn)行簡化判斷
	return a >= b ? a : b;
    }
    
    //定義一個(gè)私有的方法,該方法的兩個(gè)參數(shù)類型不同,這同樣也屬于方法重載。
    private double max(double a, int b) {
	// 采用三目運(yùn)算符進(jìn)行簡化判斷
	return a >= b ? a : b;
    }
}

以上代碼,編譯、運(yùn)行都是完全沒問題的。雖然3個(gè)max()方法名稱相同,但它們的形參列表不同,所以系統(tǒng)可以正常區(qū)分出這3個(gè)方法。在運(yùn)行時(shí),Java虛擬機(jī)會(huì)根據(jù)傳遞過來的不同參數(shù)來調(diào)用不同的方法。

2. 構(gòu)造方法重載

除了普通方法可以重載之外,構(gòu)造方法也可以重載。但是我們要注意,構(gòu)造方法沒有返回值。

/**
 * @author
 */
public class Car {
    // 汽車品牌
    public String logo;

    // 汽車顏色
    private String color;

    // 汽車價(jià)格
    private double price;

    // 無參構(gòu)造方法
    public Car() {
	System.out.println("汽車類...");
    }

    // 有參構(gòu)造方法
    public Car(String logo) {
	System.out.println("汽車類...logo=" + logo);
    }

    // 有參構(gòu)造方法
    public Car(String logo, String color) {
	System.out.println("汽車類...logo=" + logo + ",color=" + color);
    }

    // 有參構(gòu)造方法
    public Car(String logo, String color, double price) {
	System.out.println("汽車類...logo=" + logo + ",color=" + color + ",price=" + price);
    }
}

我們在構(gòu)造Car汽車類對象時(shí),可以如下所示:

public class Demo02 {
    public static void main(String[] args) {
	Car car1 = new Car();
	Car car2 = new Car("奧迪A6");
	Car car3 = new Car("奧迪A6", "黑色");
	Car car4 = new Car("奧迪A6", "黑色", 50.0);
    }
}

這樣通過傳入不同的參數(shù),就可以構(gòu)造出不同的汽車對象。

三. 結(jié)語

至此,就把方法重載相關(guān)的內(nèi)容講解完畢了,現(xiàn)在你知道哪些情況屬于方法重載了嗎?方法重載要點(diǎn)如下:

  • 方法重載是指同一類中有多個(gè)方法的名稱相同,但參數(shù)不同;
  • 重載的方法功能都類似,比如 String indexOf()方法
  • 重載方法的返回值類型盡量要相同。

以上就是關(guān)于Java如何正確地實(shí)現(xiàn)方法重載詳解的詳細(xì)內(nèi)容,更多關(guān)于Java方法重載的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Springboot 如何使用@Async整合線程池

    Springboot 如何使用@Async整合線程池

    這篇文章主要介紹了Springboot 使用@Async整合線程池的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 簡單講解Java的Future編程模式

    簡單講解Java的Future編程模式

    這篇文章主要介紹了Java的Future編程模式,包括對異步和并發(fā)的一些設(shè)計(jì)思維,需要的朋友可以參考下
    2015-11-11
  • Spring事務(wù)管理詳細(xì)講解

    Spring事務(wù)管理詳細(xì)講解

    事務(wù)的作用就是為了保證用戶的每一個(gè)操作都是可靠的,事務(wù)中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就?回退到事務(wù)開始未進(jìn)行操作的狀態(tài)。事務(wù)管理是Spring框架中最為常用的功能之一,我們在使用Spring?Boot開發(fā)應(yīng)用時(shí),大部分情況下也都需要使用事務(wù)
    2022-10-10
  • 解決mysql字符串類型的數(shù)字排序出錯(cuò):cast(year as signed)

    解決mysql字符串類型的數(shù)字排序出錯(cuò):cast(year as signed)

    這篇文章主要介紹了解決mysql字符串類型的數(shù)字排序出錯(cuò)問題 :cast(year as signed),如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 如何在Java中優(yōu)雅地使用正則表達(dá)式詳解

    如何在Java中優(yōu)雅地使用正則表達(dá)式詳解

    這篇文章主要給大家介紹了關(guān)于如何在Java中優(yōu)雅地使用正則表達(dá)式的相關(guān)資料,正則表達(dá)式就是一個(gè)字符串,但和普通的字符串不同的是,正則表達(dá)式是對一組相似字符串的抽象,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Springmvc完成ajax功能實(shí)例詳解

    Springmvc完成ajax功能實(shí)例詳解

    在本篇文章里小編給大家整理了關(guān)于Springmvc完成ajax功能實(shí)例內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2019-09-09
  • 詳解Spring MVC的攔截器與異常處理機(jī)制

    詳解Spring MVC的攔截器與異常處理機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Spring MVC的攔截器與異常處理機(jī)制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java二維數(shù)組計(jì)算集合總結(jié)

    Java二維數(shù)組計(jì)算集合總結(jié)

    本篇文章給大家整理了關(guān)于Java二維數(shù)組計(jì)算集合的內(nèi)容總結(jié),有需要的讀者們可以參考下。
    2018-02-02
  • Java集合的定義與Collection類使用詳解

    Java集合的定義與Collection類使用詳解

    這篇文章主要介紹了Java集合的定義及Collection工具類使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • Springboot定時(shí)任務(wù)Scheduled重復(fù)執(zhí)行操作

    Springboot定時(shí)任務(wù)Scheduled重復(fù)執(zhí)行操作

    這篇文章主要介紹了Springboot定時(shí)任務(wù)Scheduled重復(fù)執(zhí)行操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論