Java精選文章

Java物件導向程式設計完整指南

深入理解Java物件導向的核心概念,包含類別、物件、繼承、多型和封裝等重要主題。

張工程師
15分鐘閱讀
#Java#物件導向#程式設計基礎

# Java物件導向程式設計完整指南

物件導向程式設計(Object-Oriented Programming, OOP)是現代軟體開發的核心概念之一。Java作為純物件導向語言,完美地體現了OOP的各種特性。

## 1. 什麼是物件導向?

物件導向是一種程式設計思維,它將現實世界中的事物抽象為物件,每個物件都有自己的屬性(資料)和方法(行為)。

### 核心概念:
- **類別(Class)**:物件的藍圖或模板
- **物件(Object)**:類別的實例
- **屬性(Attribute)**:物件的資料
- **方法(Method)**:物件的行為

## 2. 封裝(Encapsulation)

封裝是將資料和操作資料的方法綁定在一起,並隱藏內部實作細節的原則。

java
public class Student {
private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
if (name != null && !name.trim().isEmpty()) {
this.name = name;
}
}

public int getAge() {
return age;
}

public void setAge(int age) {
if (age > 0 && age < 150) {
this.age = age;
}
}
}


## 3. 繼承(Inheritance)

繼承允許新類別基於現有類別建立,子類別可以繼承父類別的屬性和方法。

java
public class Person {
protected String name;
protected int age;

public void introduce() {
System.out.println("我是 " + name + ",今年 " + age + " 歲");
}
}

public class Student extends Person {
private String studentId;
private String major;

@Override
public void introduce() {
System.out.println("我是學生 " + name + ",學號:" + studentId);
}

public void study() {
System.out.println(name + " 正在學習 " + major);
}
}


## 4. 多型(Polymorphism)

多型允許同一個介面表示不同的底層資料型態,提供了程式的靈活性。

java
public abstract class Animal {
public abstract void makeSound();
}

public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("汪汪!");
}
}

public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("喵喵!");
}
}

// 使用多型
Animal[] animals = {new Dog(), new Cat()};
for (Animal animal : animals) {
animal.makeSound(); // 根據實際型態調用對應方法
}


## 5. 抽象(Abstraction)

抽象是隱藏複雜實作細節,只暴露必要功能的過程。

java
public interface Drawable {
void draw();
void setColor(String color);
}

public class Circle implements Drawable {
private String color;
private int radius;

@Override
public void draw() {
System.out.println("繪製一個" + color + "的圓形,半徑:" + radius);
}

@Override
public void setColor(String color) {
this.color = color;
}
}


## 6. 實際應用範例

讓我們建立一個簡單的銀行帳戶系統來展示所有OOP概念:

java
public abstract class BankAccount {
protected String accountNumber;
protected double balance;
protected String ownerName;

public BankAccount(String accountNumber, String ownerName) {
this.accountNumber = accountNumber;
this.ownerName = ownerName;
this.balance = 0.0;
}

public abstract void withdraw(double amount);

public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("存款成功,餘額:" + balance);
}
}

public double getBalance() {
return balance;
}
}

public class SavingsAccount extends BankAccount {
private double interestRate;

public SavingsAccount(String accountNumber, String ownerName, double interestRate) {
super(accountNumber, ownerName);
this.interestRate = interestRate;
}

@Override
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("提款成功,餘額:" + balance);
} else {
System.out.println("餘額不足或金額無效");
}
}

public void addInterest() {
balance += balance * interestRate;
System.out.println("利息已添加,新餘額:" + balance);
}
}


## 總結

物件導向程式設計提供了:

1. **程式碼重用性**:透過繼承和組合
2. **維護性**:封裝使程式碼更容易維護
3. **擴展性**:多型和抽象提供靈活的設計
4. **可讀性**:模擬現實世界的概念

掌握這些概念對於成為優秀的Java程式設計師至關重要。建議多寫程式碼實作,深化理解。
Java物件導向程式設計完整指南 | 香港大專CS功課代做