Java類與對象:從定義到實例化,面向對象基礎

什麼是面向對象編程?

想象你要設計一個手機遊戲,裏面有“玩家”這個角色。每個玩家都有名字、等級、血量(屬性),還能攻擊、移動、升級(行爲)。在Java中,“玩家”就是一個,而具體某個玩家(比如“小明”)就是這個類的一個對象。面向對象編程(OOP)的核心是把現實中的事物抽象成“類”,再通過“對象”來模擬和操作這些事物。

類:對象的“設計圖紙”

類是對象的模板,規定了對象有什麼屬性(數據)和行爲(方法)。比如定義一個Person類,用來描述“人”的特徵:

class Person {
    // 成員變量(屬性):描述對象的狀態
    String name;  // 姓名
    int age;      // 年齡

    // 成員方法(行爲):描述對象的功能
    void sayHello() {
        System.out.println("大家好,我叫" + name + ",今年" + age + "歲。");
    }
}
  • 成員變量nameage描述了“人”的基本信息(狀態)。
  • 成員方法sayHello()描述了“人”的行爲(功能)。

實例化對象:從“圖紙”到“真實物品”

類只是設計圖,要使用它,需要創建對象(實例化)。語法是:類名 對象名 = new 類名();

// 創建一個Person類的對象
Person person = new Person();
  • new Person():通過new關鍵字根據類的模板創建一個新對象。
  • person:變量名,用來指向這個對象(類似“指針”,後續通過它訪問對象的屬性和方法)。

訪問對象的成員

創建對象後,用 . 操作符訪問對象的成員變量和方法:

1. 給成員變量賦值

person.name = "小明";  // 設置name屬性
person.age = 20;       // 設置age屬性

2. 調用成員方法

person.sayHello();  // 輸出:大家好,我叫小明,今年20歲。

構造方法:創建對象時初始化

如果想在創建對象時直接設置屬性,可使用構造方法(與類名同名,無返回值):

class Person {
    String name;
    int age;

    // 無參構造方法(Java默認提供,若自定義則消失)
    public Person() {
        name = "默認名字";  // 初始化默認值
        age = 0;
    }

    // 帶參構造方法:創建對象時直接賦值
    public Person(String name, int age) {
        this.name = name;  // this表示當前對象,避免參數名與成員變量名衝突
        this.age = age;
    }

    void sayHello() {
        System.out.println("大家好,我叫" + name + ",今年" + age + "歲。");
    }
}

使用構造方法創建對象:

// 用無參構造
Person p1 = new Person();
p1.sayHello();  // 輸出:大家好,我叫默認名字,今年0歲。

// 用帶參構造
Person p2 = new Person("小紅", 18);
p2.sayHello();  // 輸出:大家好,我叫小紅,今年18歲。

完整示例:從類到對象的實戰

class Person {
    String name;
    int age;

    // 無參構造
    public Person() {}

    // 帶參構造
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    void sayHello() {
        System.out.println("大家好,我叫" + name + ",今年" + age + "歲。");
    }
}

// 主類(程序入口)
public class Main {
    public static void main(String[] args) {
        // 創建對象
        Person p1 = new Person("小明", 20);
        Person p2 = new Person();

        // 調用方法
        p1.sayHello();  // 輸出:大家好,我叫小明,今年20歲。
        p2.name = "小剛";
        p2.age = 22;
        p2.sayHello();  // 輸出:大家好,我叫小剛,今年22歲。
    }
}

關鍵注意點

  1. 命名規範:類名首字母大寫(如Person),成員變量和方法首字母小寫(如namesayHello)。
  2. 默認值:成員變量不賦值時會有默認值(如int默認0String默認null)。
  3. 對象獨立:每個對象的成員變量互不影響(如p1p2修改自己的name不會影響對方)。
  4. 封裝建議:實際開發中,成員變量通常用private修飾(隱藏內部細節),通過getter/setter方法訪問(如getName()獲取名字)。

總結

類是“設計圖”,對象是“真實物品”。通過new實例化對象,用.訪問成員,構造方法初始化屬性,就能完成Java面向對象的基礎操作。掌握類與對象後,後續學習封裝、繼承、多態會更輕鬆!

小夜