什麼是面向對象編程?¶
想象你要設計一個手機遊戲,裏面有“玩家”這個角色。每個玩家都有名字、等級、血量(屬性),還能攻擊、移動、升級(行爲)。在Java中,“玩家”就是一個類,而具體某個玩家(比如“小明”)就是這個類的一個對象。面向對象編程(OOP)的核心是把現實中的事物抽象成“類”,再通過“對象”來模擬和操作這些事物。
類:對象的“設計圖紙”¶
類是對象的模板,規定了對象有什麼屬性(數據)和行爲(方法)。比如定義一個Person類,用來描述“人”的特徵:
class Person {
// 成員變量(屬性):描述對象的狀態
String name; // 姓名
int age; // 年齡
// 成員方法(行爲):描述對象的功能
void sayHello() {
System.out.println("大家好,我叫" + name + ",今年" + age + "歲。");
}
}
- 成員變量:
name和age描述了“人”的基本信息(狀態)。 - 成員方法:
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歲。
}
}
關鍵注意點¶
- 命名規範:類名首字母大寫(如
Person),成員變量和方法首字母小寫(如name、sayHello)。 - 默認值:成員變量不賦值時會有默認值(如
int默認0,String默認null)。 - 對象獨立:每個對象的成員變量互不影響(如
p1和p2修改自己的name不會影響對方)。 - 封裝建議:實際開發中,成員變量通常用
private修飾(隱藏內部細節),通過getter/setter方法訪問(如getName()獲取名字)。
總結¶
類是“設計圖”,對象是“真實物品”。通過new實例化對象,用.訪問成員,構造方法初始化屬性,就能完成Java面向對象的基礎操作。掌握類與對象後,後續學習封裝、繼承、多態會更輕鬆!