- Java面向對象軟件開發
- 姚駿屏 汪衛星主編
- 516字
- 2018-12-29 19:04:18
2.3.1 重載
同一個類中如果同時存在兩個以上的方法有同一個名字,在這種情況下,我們說方法被重載了,這個過程被稱為方法重載。但虛擬機如何判斷到底要使用哪個方法工作呢?
調用重載方法時,Java根據參數列表中參數的個數、參數的數據類型和參數的順序來表明實際調用的是哪一個方法。因此,重載方法在參數類型和(或)數目方面不能相同。虛擬機遇到一個對重載方法的調用時,它會執行其參數與調用參數相匹配的方法。
【例2-10】 使用類的重載構造方法生成不同的長方形對象,計算各長方形的面積。
class Rectangle{ double length; // 長 double width; // 寬 // 定義三個重載的構造方法 public Rectangle(){ // 無參構造方法 length = 1.0; width = 1.0; } public Rectangle(double length){ // 帶參構造方法 this.length = length; this.width = length; } public Rectangle(double length,double width){ 帶參構造方法 this.length = length; this.width = width; } public double area(){ // 求長方形的面積 return length * width; } public void display(){ System.out.println("長方形的面積是:" + this.area()); } } public class RectangleDemo{ public static void main (String args[]){ Rectangle rect1=new Rectangle(); // 調用無參構造方法 rect1.display(); Rectangle rect2=new Rectangle(6); // 調用有一個參數的構造方法 rect2.display(); Rectangle rect3=new Rectangle(10,20); // 調用有兩個參數的構造方法 rect3.display(); } }
該程序的運行結果如下:
長方形的面積是:1.0 長方形的面積是:36.0 長方形的面積是:200.0
可以看到,在長方形類Rectangle中構造方法Rectangle()被重載了3次。第一個版本沒有參數,第二個版本有一個double型參數,第三個版本有兩個double型參數。Java編譯器根據重載方法調用時提供的實際參數選擇執行對應的重載方法。