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

2.1.4 類的構造方法

在Java中,任何變量在被使用前都必須先設置初值。在每次創(chuàng)建一個實例時,初始化類中的所有變量是一項枯燥無味的工作。如果在第一次創(chuàng)建對象時就完成所有的設置,這將會使工作更簡單。基于這個原因,Java允許在對象創(chuàng)建時就對其進行初始化。這種自動初始化工作是通過使用構造方法來完成的。

構造方法(constructor)在創(chuàng)建對象時就自動運行,它一般用來初始化成員變量。構造方法與它所在的類有同樣的名稱,在語法上與一般方法類似。構造方法的一般形式如下:

      [修飾符]  方法名([形式參數(shù)列表]){
      // 方法體
      }

構造方法是一種特殊的成員方法,它的特殊性反映在如下幾個方面:

(1)構造方法名與類名完全相同(包括大小寫也一樣)。

(2)構造方法不返回任何值,也沒有返回類型(連void都沒有)。

(3)每一個類可以有零個或多個構造方法,如果沒有寫構造方法則默認存在一個沒有參數(shù)的構造方法。

(4)一旦用戶定義了自己的構造方法,默認的無參構造方法就不再存在。

(5)構造方法在創(chuàng)建一個類的對象時由系統(tǒng)自動地調用執(zhí)行,一般不能顯式地像使用普通方法一樣直接調用。

例2-2】 繼續(xù)改造長方體類,使對象創(chuàng)建時能自動初始化長方形的尺寸。

定義一個帶參構造方法來進行初始化,這個構造方法的功能是將每個長方形的尺寸設置為指定的參數(shù)值。請?zhí)貏e注意Rectangle對象是如何被創(chuàng)建的。

            public class Rectangle{
                double length;  // 長
                double width;   // 寬
                // 帶參構造方法,用于初始化長方形的長和寬
                public Rectangle(double w, double l){
                    width = w;
                    length = l;
                }
                // 求長方形的面積
                double area(){
                    return length * width;
                }
            }
            public class RectangleDemo{
                public static void main (String args[]){
                    // 調用構造方法初始化每個長方形對象
                    Rectangle rect1 = new Rectangle(10,20);
                    Rectangle rect2 = new Rectangle(3,6);
                    double area;
                    area=rect1.area();  // 調用area()方法得到第一個長方形的面積
                    System.out.println("第一個長方形的面積是:" + area);
                    area=rect2.area();  // 調用area()方法得到第二個長方形的面積
                    System.out.println("第二個長方形的面積是:" + area);
                }
            }

該程序的運行結果如下所示:

            第一個長方形的面積是:200.0
            第二個長方形的面積是:18.0

可以看到,每個對象按其構造方法所指定的參數(shù)初始化。例如,在下面的代碼行中,

            Rectangle rect1 = new Rectangle(10,20);

當new創(chuàng)建對象時,將自動調用構造方法,那么rect1的width和length屬性就將分別被賦值10和20。

在【例2-2】的Rectangle類中存在用戶定義的構造方法,此時就只能調用這個用戶定義的構造方法Rectangle(double w, double l)來創(chuàng)建Rectangle類的兩個對象rect1和rect2。而不能再使用無參構造方法了。

主站蜘蛛池模板: 伊川县| 南召县| 页游| 神池县| 黔江区| 高碑店市| 南平市| 普宁市| 通海县| 海兴县| 饶河县| 汤阴县| 菏泽市| 南昌市| 利川市| 准格尔旗| 鹿泉市| 大化| 青川县| 炎陵县| 新乡市| 扎鲁特旗| 湾仔区| 邵阳县| 都昌县| 邳州市| 北宁市| 会宁县| 沅江市| 海宁市| 淮南市| 广西| 修武县| 昔阳县| 宜黄县| 防城港市| 绥滨县| 叙永县| 平山县| 怀远县| 禹州市|