物件導向程式設計 (OOP) 是 Java 的核心思想。本文從物件、類別基本概念切入,詳細講解封裝實作、建構子機制、getter/setter 模式、方法重載規則,配合完整可執行範例,幫助初學者建立扎實的 OOP 基礎。
| 概念 | 說明 |
|---|---|
| 物件 | 客觀存在的實體,包含屬性(名詞)與行為(動詞),如:狗(名字、顏色) + 叫、跑 |
| 類別 | 同類物件的抽象描述,是建立物件的模板/藍圖 |
| 實例化 | 用類別建立具體物件的過程:Dog d = new Dog(); |
class 類別名 {
存取修飾符 成員變數;
存取修飾符 方法(參數) { 方法體; }
}
public:公開,任意位置可存取private:私有,僅本類別內可存取default (無):包內可存取,包外不可
public class Dog {
// 私有欄位,外部不可直接存取
private String name = "大黃";
private String owner;
// getter:取得值
public String getName() {
return name;
}
// setter:設定值,可加入驗證邏輯
public void setName(String name) {
if (name != null && !name.equals(owner)) { // 簡單業務規則
this.name = name;
}
}
// 行為方法
public void bark() {
System.out.println(name + ":旺!旺!旺!");
}
}
public
public class Student {
private String name;
private int age;
// 無參建構子
public Student() {}
// 兩參建構子
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Home {
public static void main(String[] args) {
// 1. 實例化
Dog myDog = new Dog();
// 2. 使用 setter 修改名字
myDog.setName("小黃");
// 3. 使用 getter 取得名字
System.out.println("小狗的名字是:" + myDog.getName());
// 4. 呼叫行為方法
myDog.bark();
}
}
小狗的名字是:小黃 小黃:旺!旺!旺!

同一類別中,方法名相同,參數列表不同(個數、型別、順序),與返回值型別無關。
public class Calculator {
// 兩個 int 相加
public int add(int a, int b) {
return a + b;
}
// 三個 int 相加 (重載)
public int add(int a, int b, int c) {
return add(a, b) + c; // 復用兩參版本
}
// 兩個 double 相加 (重載)
public double add(double a, double b) {
return a + b;
}
}
根據實際傳入引數的型別、個數、順序,自動匹配最合適的重載版本(精確匹配 > 基本型別擴大 > 自動裝箱 > 可變參數)。
public,導致業務邏輯分散、難以驗證long vs int) 導致呼叫端歧義getXxx/setXxx),框架無法識別類別是模板,物件是實例。封裝用 private + getter/setter 保護資料、建構子確保物件正確初始化、重載提供同名不同參的彈性介面。掌握這三大基石,即能撰寫結構清晰、易維護的 Java 物件導向程式。