關于Java如何正確地實現(xiàn)方法重載詳解
一. 方法重載
1. 概念
所謂方法的重(chong)載(重復出現(xiàn)),就是指在一個類中可以有多個名稱相同但參數(shù)不同的方法, 不過方法重載與返回值的類型無關。在Java中,無論是普通方法,還是構造方法,都可以進行重載。我們在調用重載的方法時,會根據(jù)傳遞的參數(shù)不同,來執(zhí)行不同的方法。
通過方法的重載,我們就可以把一系列功能相似,但參數(shù)不同的方法,用同一個方法名進行定義。這樣就避免了出現(xiàn)繁多的方法名,如果我們每次新建一個方法,就取個新的方法名,就會降低程序的可讀性。使用同一個方法名稱,我們就很容易記住這些方法,使用起來就很方便靈活。
2. 要求
根據(jù)方法重載的概念可知,方法重載時有如下要求:
1. 同名不同參(參數(shù)類型、個數(shù)、順序);
2. 與返回值、訪問修飾符無關。
也就是說,方法重載時,要求方法的名稱相同,但參數(shù)不同,只要參數(shù)的類型、個數(shù)、順序有一個地方不同即可。但方法的重載與返回值和使用的訪問修飾符沒有關系!
我們可以自己進行重載方法的定義,當然java源碼中也有大量的重載方法,比如我們常見的String類中就有,如下圖所示:
比如String字符串中就定義了多個indexOf()和lastIndexOf()重載方法,當然也有其他的重載方法。這些方法名稱相同,但參數(shù)肯定不同,和返回值沒有關系!
說了這么多之后,接下來還是讓我們通過一些案例看看方法的重載怎么實現(xiàn)吧。
二. 代碼案例
1. 普通方法重載
接下來我們設計一個案例,用于比較兩個數(shù)字的大小。我們在比較兩個數(shù)值時,數(shù)值的類型是不固定的,可能是兩個int類型的數(shù)值,也可能是兩個double類型的數(shù)值,也可能是兩個double、一個int類型的數(shù)值......在這種情況下,我們就可以使用方法的重載來實現(xiàn)數(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); } // 輸出較大的那個整數(shù) public int max(int a, int b) { // 采用三目運算符進行簡化判斷 return a >= b ? a : b; } // 輸出較大的那個單精度數(shù) public float max(float a, float b) { // 采用三目運算符進行簡化判斷 return a >= b ? a : b; } // 輸出較大的那個單精度數(shù) public double max(double a, double b) { // 采用三目運算符進行簡化判斷 return a >= b ? a : b; } //定義一個私有的方法,該方法的兩個參數(shù)類型不同,這同樣也屬于方法重載。 private double max(double a, int b) { // 采用三目運算符進行簡化判斷 return a >= b ? a : b; } }
以上代碼,編譯、運行都是完全沒問題的。雖然3個max()方法名稱相同,但它們的形參列表不同,所以系統(tǒng)可以正常區(qū)分出這3個方法。在運行時,Java虛擬機會根據(jù)傳遞過來的不同參數(shù)來調用不同的方法。
2. 構造方法重載
除了普通方法可以重載之外,構造方法也可以重載。但是我們要注意,構造方法沒有返回值。
/** * @author */ public class Car { // 汽車品牌 public String logo; // 汽車顏色 private String color; // 汽車價格 private double price; // 無參構造方法 public Car() { System.out.println("汽車類..."); } // 有參構造方法 public Car(String logo) { System.out.println("汽車類...logo=" + logo); } // 有參構造方法 public Car(String logo, String color) { System.out.println("汽車類...logo=" + logo + ",color=" + color); } // 有參構造方法 public Car(String logo, String color, double price) { System.out.println("汽車類...logo=" + logo + ",color=" + color + ",price=" + price); } }
我們在構造Car汽車類對象時,可以如下所示:
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ù),就可以構造出不同的汽車對象。
三. 結語
至此,就把方法重載相關的內容講解完畢了,現(xiàn)在你知道哪些情況屬于方法重載了嗎?方法重載要點如下:
- 方法重載是指同一類中有多個方法的名稱相同,但參數(shù)不同;
- 重載的方法功能都類似,比如 String 的 indexOf()方法 ;
- 重載方法的返回值類型盡量要相同。
以上就是關于Java如何正確地實現(xiàn)方法重載詳解的詳細內容,更多關于Java方法重載的資料請關注腳本之家其它相關文章!
相關文章
解決mysql字符串類型的數(shù)字排序出錯:cast(year as signed)
這篇文章主要介紹了解決mysql字符串類型的數(shù)字排序出錯問題 :cast(year as signed),如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Springboot定時任務Scheduled重復執(zhí)行操作
這篇文章主要介紹了Springboot定時任務Scheduled重復執(zhí)行操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09