- 零基礎學Java第2版
- 陳潔
- 997字
- 2018-12-31 19:34:45
8.4 重載
重載在整個Java語言設計中,有著非常重要的地位。本節將先講述重載的概念,然后使用大量的實例,讓讀者更加清晰地熟悉重載,并且聯系實際,將這個概念使用到現實生活中的程序開發中去,從而為以后的開發工作奠定基礎。
8.4.1 什么是重載
在Java中,同一個類中的兩個或兩個以上的方法可以有同一個名字,只要它們的參數聲明不同即可,這種方法就被稱為重載(overloaded),此過程稱為方法重載(method overloading)。
【實例8.14】下面看一個詳細的實例。
01 class overload 02 { 03 ///一個普通的方法,不帶參數 04 void test() 05 { 06 System.out.println("No parameters"); 07 } 08 ///重載上面的方法,并且帶了一個整型參數 09 void test(int a) 10 { 11 System.out.println("a:" + a); 12 } 13 ///重載上面的方法,并且帶了兩個參數 14 void test(int a,int b) 15 { 16 System.out.println("a and b:" + a + " " + b); 17 } 18 ///重載上面的方法,并且帶了一個雙精度參數,與上面帶一個參數的重載方法不一樣 19 double test(double a) 20 { 21 System.out.println("double a:" + a); 22 return a*a; 23 } 24 public static void main(String args[]) 25 { 26 overload o= new overload (); 27 o.test(); 28 o.test(2); 29 o.test(2,3); 30 o.test(2.0); 31 } 32 }
【代碼說明】第4~23行定義了4個相同名稱的test()方法,不同的是它們的參數,有沒有參數的,有一個參數的,也有兩個參數的,而且參數可以是不同的數據類型。第27~30行分別調用這4個方法。
【運行效果】
No parameters a:2 a and b:2 3 double a:2.0
通過上面的實例,讀者可以看出,重載就是在一個類中,有相同的函數名稱,但形參不同的函數。重載的結果,可以讓一個程序段,盡量減少代碼和減少程序的函數種類。
8.4.2 用實例來說明重載的意義
【實例8.15】為了能讓讀者更加熟練運用重載方法編寫程序,下面再舉一個有關重載的實例。
01 public class overload1 02 { 03 ///一個輸出方法 04 void print() 05 { 06 System.out.println("你好"); 07 } 08 ///重載上面的輸出方法,加上了參數 09 void print(String name) 10 { 11 System.out.println(name+",你好"); 12 } 13 ///重載上面的輸出方法,加上了兩個參數 14 void print(String name,int age) 15 { 16 System.out.println(name+",你好,你有"+age+"歲了"); 17 } 18 public static void main(String args[]) 19 { 20 overload1 o=new overload1(); 21 o.print(); 22 o.print("王華"); 23 o.print("王華",30); 24 } 25 }
【代碼說明】第4~17行定義了3個同名稱print()方法,不同的是參數個數和參數類型。第21~23行分別調用這3種方法。
【運行效果】
你好 王華,你好 王華,你好,你有30歲了
使用重載其實就是避免繁多的方法函數名,有些函數的功能是相似的,如果重新建立一個函數,重新取個函數名稱,會讓程序段顯得比較不容易閱讀。
下面總結重載的實質:
?方法名相同
?參數個數不同
?參數類型不同
當訪問一個重載方法時,首先編譯器會通過比較參數類型與實際調用方法中使用值的類型,以選擇正確的方法,若沒有發現匹配的,則編譯器報錯。這就叫做重載分辨。
推薦閱讀
- Web應用系統開發實踐(C#)
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- Visual Studio 2012 Cookbook
- AngularJS Web Application Development Blueprints
- 編寫高質量代碼:改善Python程序的91個建議
- 軟件工程
- Visual C++開發入行真功夫
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- 深入淺出React和Redux
- Solr Cookbook(Third Edition)
- Access 2010中文版項目教程
- 代替VBA!用Python輕松實現Excel編程
- QlikView Unlocked
- C++17 By Example
- Arduino Electronics Blueprints