Java 快速導覽 - 物件導向概念 宣告及定義方法

類別 (class) 中的方法 (method) 為物件 (object) 進行所屬工作的地方,工作可以是計算或是做一些事情,計算如 a + b 之類的運算式 (expression) ,像是呼叫 System.out.println() 印出資訊到螢幕上。



方法的宣告 (declaration) 與定義包含
  • 修飾子 (modifier) ,如 privatepublic ,也可以不加
  • 回傳值 (return value) 的資料型態 (data type)
  • 識別字 (identifier) 名稱
  • 小括弧中的參數列 (parameter list) ,也可以留空,也就是不提供任何參數 (parameter)
  • 大括弧圍起來的主體


形式如下
return_type method_name(parameter list) {
    //method_body
}


做一些事情的方法沒有計算結果,因此不需要有回傳值,沒有回傳值的方法要用關鍵字 (keyword) 中的 void 宣告,也就是 return_type 的位置放入 void


進行計算工作或有需要回傳物件的方法可以有回傳值,這是說計算完成後可以將計算結果或物件回傳給呼叫方,這時需要用到關鍵字中的 return ,作為回傳數值或物件之用。


有回傳值的方法, return 陳述通常放在方法主體的最後面,也就是左大括弧之前,例如
class ReturnDemo1 {
    int add(int a, int b) {
        int c;
        c = a + b;
        return c;
    }
    
    public static void main(String[] args) {
        ReturnDemo1 v = new ReturnDemo1();
        int result = v.add(11, 22);
        System.out.println(result);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:ReturnDemo1.java
    功能:示範物件導向的基本觀念 
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



第 2 行宣告了一個 add() 方法,回傳值型態為 int ,需要兩個參數,型態都是 int
int add(int a, int b) {
    int c;
    c = a + b;
    return c;
}


第 3 行在 add() 中宣告了 int 型態的變數 (variable) c ,這是 add() 方法中的區域變數 (local method) ,僅在方法中有效,離開方法的範圍,識別字 c 可能是其他的名稱。


第 4 行將兩個參數相加,結果指派給 c ,最後回傳 c 。


return 陳述也可以放在方法需要回傳值的地方,不一定會在方法的最後面,例如以下計算費博納西數 (fibonacci number) 的方法就用了兩個 return 陳述
class ReturnDemo2 {
    int fibonacci(int n) {
        if (n == 0 || n == 1) {
            return 1;
        }
        else {
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    }
    
    public static void main(String[] args) {
        ReturnDemo2 v = new ReturnDemo2();
        int n = 10;
        while (n > 0) {
            System.out.println(v.fibonacci(n));
            n--;
        }
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:ReturnDemo2.java
    功能:示範物件導向的基本觀念 
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



fibonacci() 的設計方法在數學上稱為遞迴函數 (recursive function) ,也就是函數 (function) 不斷的呼叫 (call) 函數本身來解決數學問題,然而 Java 中沒有函數只有方法,因此以相同模式來設計方法。


中英文術語對照
類別class
方法method
物件object
運算式expression
宣告declaration
修飾子modifier
回傳值return value
資料型態data type
識別字identifier
參數列parameter list
參數parameter
關鍵字keyword
變數variable
區域變數local method
費博納西數fibonacci number
遞迴函數recursive function
函數function
呼叫call






1 則留言:

Unknown 提到...

「 這是 add() 方法中的區域變數 (local method) 」
這個英文寫錯了喔!是 Local Variable 才對吧~