首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 類成員方法入門完全指南:定義、調用、參數傳遞與實戰案例

     編輯:Java 綜合教學

前言

方法是 Java 面向對象編程中實現行為封裝的核心機制。本文從零開始,通過 Person 類實例,徹底講透成員方法的定義語法、調用機制、參數傳遞本質、重載規則及常見誤區,幫助初學者建立扎實的方法設計思維。

一、成員方法基本語法

[修飾符] 返回值類型 方法名([參數類型 參數名, ...]) {
    // 方法體語句
    [return 返回值;]
}
  • 修飾符: public/private/protected (存取控制)、static (類方法)、final (禁止重寫)、abstract (無實現)。
  • 返回值類型: 基本類型、引用類型、void (無返回)。
  • 參數列表: 0~N 個,每個「類型 變量名」,本質是局部變量。

二、實戰案例:Person 類完整實現

1. 類定義與屬性

public class Person {
    // 實例變量 (屬性)
    private String name;
    private int age;
    
    // 構造器
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // Getter/Setter (封裝)
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    // ... age 同理
}

2. 三種典型成員方法

方法一:無參無返回 - speak()

/** 輸出自我介紹 */
public void speak() {
    System.out.println("我是 " + name + ",今年 " + age + " 歲,是個大好人!");
}

方法二:帶參無返回 - calculateSum(int n)

/** 計算 1+2+...+n 並輸出結果 */
public void calculateSum(int n) {
    if (n <= 0) {
        System.out.println("請輸入正整數!");
        return; // 提前結束 void 方法
    }
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += i;
    }
    System.out.println("1 到 " + n + " 的和是:" + sum);
}

方法三:帶參帶返回 - add(int a, int b)

/** 計算兩數之和並返回 */
public int add(int a, int b) {
    return a + b; // 必須有返回值
}

// 重載版本:支持三數求和
public int add(int a, int b, int c) {
    return a + b + c;
}

三、方法調用機制詳解

1. 對象調用語法

public class Demo {
    public static void main(String[] args) {
        // 創建對象
        Person p1 = new Person("張三", 20);
        
        // 調用無參方法
        p1.speak(); // 輸出:我是 張三,今年 20 歲,是個大好人!
        
        // 調用帶參方法
        p1.calculateSum(100); // 輸出:1 到 100 的和是:5050
        
        // 調用帶返回方法,接收結果
        int result = p1.add(13, 11);
        System.out.println("13 + 11 = " + result); // 24
        
        // 重載調用
        int result3 = p1.add(1, 2, 3);
        System.out.println("1+2+3 = " + result3); // 6
    }
}

2. 參數傳遞:值傳遞鐵律 (面試必考)

public class ParamDemo {
    public static void main(String[] args) {
        int num = 10;
        changePrimitive(num);
        System.out.println("基本類型:" + num); // 10 未變
        
        Person p = new Person("李四", 25);
        changeRef(p);
        System.out.println("引用類型名字:" + p.getName()); // "王五" 已變!
        
        swapRef(p, new Person("趙六", 30));
        System.out.println("交換後名字:" + p.getName()); // "李四" 未變!引用地址未交換
    }
    
    // 基本類型:傳值副本,無法修改原變量
    static void changePrimitive(int x) { x = 20; }
    
    // 引用類型:傳引用副本 (地址),可修改對象內部狀態
    static void changeRef(Person p) { p.setName("王五"); }
    
    // 嘗試交換引用:失敗!Java 無傳引用的引用
    static void swapRef(Person a, Person b) { Person tmp = a; a = b; b = tmp; }
}

四、方法重載規則與最佳實踐

重載條件同一類中說明
方法名相同必須
參數列表不同 (類型/個數/順序)核心判斷依據
返回類型可相同可不同不可作為唯一區分依據
修飾符/異常無限制不影響重載

重載陷阱:自動類型提升

public void test(int a) { System.out.println("int"); }
public void test(long a) { System.out.println("long"); }
public void test(double a) { System.out.println("double"); }

// 呼叫
test(10);    // int
test(10L);   // long
test(10.0);  // double
test('A');   // int (char 提升為 int)
test(10F);   // double (float 提升為 double)
// 短/位元組/字符調用無參版本會提升至 int

五、常見錯誤與避坑指南

  1. 忘寫 return: 非 void 方法所有路徑必須返回值。
  2. void 方法寫 return 值: 編譯錯誤,只能 return; 或省略。
  3. 參數名與成員變量同名未用 this: 導致賦值給參數而非字段。
  4. 靜態方法調用非靜態成員: 直接 this.field 或 nonStaticMethod() 編譯報錯。
  5. 遞迴缺少基準情況: 導致 StackOverflowError。

六、進階預覽:Java 8+ 新特性

  • 默認方法: 介面中 default void log() { ... },實現類可不重寫。
  • 靜態方法: 介面中 static String format() { ... },工具方法歸屬介面。
  • 方法引用: list.forEach(System.out::println) 替代 Lambda。

結語

成員方法是對象行為的載體。掌握「定義規範、調用機制、值傳遞本質、重載規則」,並養成「單一職責、參數校驗、異常處理、命名語義化」的編碼習慣,是邁向高質量 Java 開發的基石。建議動手敲碼運行本文所有範例,在實踐中內化知識。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved