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

3.2 方法

前面的內容中已經使用了不少方法,如setter方法、getter方法、靜態方法、工廠方法。現在,討論方法。

Java中,定義一個方法的格式如下。

    <修飾符><返回值類型><方法名>(<參數列表>) {
    <方法體>
    }

其中:

□ <修飾符>,確定方法的訪問形式(如靜態方法)與訪問級別(如私有的、公共的等),稍后會有關于修飾符的更多討論。

□ <返回值類型>,指定方法返回數據的類型,如果方法不需要返回數據,則指定為void。

□ <方法名>,指定方法的名稱,一般會使用首字母小寫,然后每個單詞首字母大寫的形式,如getCounter()、moveTo()等。

□ <參數列表>,代入方法的數據,如果沒有可以空著。參數可以有一個或多個,多個參數使用逗號分隔,每一個參數都應用包含數據類型和參數變量。

□ <方法體>,作為方法的主體部分,是方法完成工作的地方。如果在方法體中需要返回數據,則使用return語句來完成。實際上,即使方法不需要返回值,也可以使用空的return語句隨時終止方法的執行。

下面的代碼在CAuto類中添加一個靜態方法,用于計算百公里的油耗。

代碼中,定義lphkm()方法為公共的靜態方法,這樣就可以使用CAuto類的名稱訪問。兩個參數分別指定行駛的里程和耗油量,類型也都定義為double。返回值類型定義為double,方法中使用return語句返回百公里油耗。

下面的代碼測試lphkm()方法的使用。

    public static void main(String[] args) {
        double l = CAuto.lphkm(1000d, 98d);
        String s = String.format("百公里油耗為%.2f升",l);
        System.out.println(s);
    }

圖3-7 調用方法

代碼執行結果如圖3-7所示。

3.2.1 可變長參數

如果在方法中需要使用零個或多個相同類型的參數,可以通過可變長(variable-length)參數簡化參數的定義。

定義可變長參數時,需要在參數類型后加上...運算符。下面的代碼在CAuto類中添加join()實例方法,用于向車中添加乘員。

join()方法的參數看上去只有一個,但是,在String后面使用了...運算符,這樣,調用join()方法時就可以使用零個或多個String類型的參數。

下面的代碼演示了join()方法的使用。

    public static void main(String[] args) {
        CAuto suv = CAutoFactory.createSuv();
        suv.join("Tom","Jerry","John");
    }

代碼執行結果如圖3-8所示。

可修改suv.join()方法中的參數數量(零個或多個),并觀察執行結果。

圖3-8 使用可變長參數

3.2.2 重載

方法的重載是指,多個方法具有相同的名稱,但不同的參數定義能夠明顯地區分方法的版本。調用方法時,可以根據代入的參數自動調用最匹配的版本。實際上,CAuto類的構造函數已經使用了重載。

下面的代碼在CAuto類中再添加三個moveTo()方法。

代碼中的moveTo()方法中,第一個版本是前面創建的,包括兩個int類型的參數;第二個版本包括兩個float類型參數;第三個版本使用一個String類型的參數,用于指定目的地名稱;第四個版本使用經緯度指定坐標,兩個參數定義為double類型。

下面的代碼分別調用這四個版本的moveTo()方法。

    public static void main(String[] args) {
        CAuto aerocar = new CAuto("ZX");
        aerocar.moveTo(99, 11);
        aerocar.moveTo(99f, 11f);
        aerocar.moveTo("那啥地方");
        aerocar.moveTo(99.0, 11.0);
    }

圖3-9 方法的重載

第一個moveTo()方法中,因為默認的整數是int類型,所以會調用參數類型為int的版本。第二個moveTo()方法中,指定參數為float類型,所以調用的是參數為float類型的版本。第三個moveTo()方法中,使用String類型的參數。第四個moveTO方法中,因為默認的浮點數是double類型,所以會調用參數為double的版本。

代碼執行結果如圖3-9所示。

主站蜘蛛池模板: 鹰潭市| 锡林郭勒盟| 陇川县| 阿拉善左旗| 延边| 前郭尔| 专栏| 水富县| 麻江县| 大渡口区| 涿州市| 手游| 巢湖市| 隆德县| 墨竹工卡县| 崇阳县| 闵行区| 宝鸡市| 兴义市| 宁河县| 姚安县| 遵义县| 翁源县| 胶州市| 罗定市| 永安市| 光泽县| 毕节市| 双鸭山市| 甘德县| 泗水县| 蒲江县| 米泉市| 岑溪市| 桦甸市| 台湾省| 陆丰市| 桃源县| 惠东县| 阿城市| 鄯善县|