官术网_书友最值得收藏!

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歲了

使用重載其實就是避免繁多的方法函數名,有些函數的功能是相似的,如果重新建立一個函數,重新取個函數名稱,會讓程序段顯得比較不容易閱讀。

下面總結重載的實質:

?方法名相同

?參數個數不同

?參數類型不同

當訪問一個重載方法時,首先編譯器會通過比較參數類型與實際調用方法中使用值的類型,以選擇正確的方法,若沒有發現匹配的,則編譯器報錯。這就叫做重載分辨。

主站蜘蛛池模板: 赤壁市| 礼泉县| 高碑店市| 卢湾区| 耿马| 嵊州市| 西乡县| 兴和县| 台湾省| 吴川市| 文昌市| 阿尔山市| 大悟县| 承德县| 宁化县| 南木林县| 武鸣县| 明溪县| 蒙阴县| 阿坝| 丹东市| 西乡县| 井冈山市| 潍坊市| 韶山市| 黎城县| 仁化县| 三门县| 策勒县| 巨野县| 松江区| 盈江县| 汝城县| 苏尼特左旗| 论坛| 榕江县| 徐州市| 石棉县| 库车县| 兰考县| 沂南县|