OOP 的四大核心概念是封包(Encapsulation)、繼承(Inheritance)、多型(Polymorphism)和抽象(Abstraction)。
1. 封包(Encapsulation)
封包是一種將資料(屬性)和操作這些資料的方法(行為)綁定在一起的技術,並隱藏內部的實現細節。這樣做的好處是外部無法直接修改物件的內部狀態,僅能透過公開的方法(getter 和 setter)來存取或修改,這有助於提升程式的安全性和可維護性。
public class Person {
private String name; // 私有屬性
private int age;
// 公開的 getter 和 setter 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2. 繼承(Inheritance)
繼承允許我們從已有的類別(父類別)建立新類別(子類別),新類別會繼承父類別的屬性和方法,並可以新增或覆寫(override)原有的方法。這種方式能夠重用代碼,並且易於建立更具專一性的類別。
public class Animal {
public void eat() {
System.out.println("This animal is eating.");
}
}
public class Dog extends Animal {
// 覆寫父類別的方法
@Override
public void eat() {
System.out.println("The dog is eating.");
}
public void bark() {
System.out.println("The dog is barking.");
}
}
3. 多型(Polymorphism)
多型允許我們在不改變程式碼結構的情況下,使用相同的介面(或方法)來執行不同的行為。這可以通過方法的覆寫(Override)和方法的多載(Overload)來實現。
public class Animal {
public void sound() {
System.out.println("Animal makes a sound.");
}
}
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks.");
}
}
public class Cat extends Animal {
@Override
public void sound() {
System.out.println("Cat meows.");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // Dog barks.
myCat.sound(); // Cat meows.
}
}
4. 抽象(Abstraction)
抽象是指將類別或方法中的非必要細節隱藏,僅暴露必要的介面給使用者。抽象可以透過抽象類別(abstract class)和介面(interface)來實現。在 Java 中,抽象類別不能被實例化,而介面則可以用來定義類別必須實現的行為。
abstract class Animal {
// 抽象方法
public abstract void sound();
// 非抽象方法
public void sleep() {
System.out.println("This animal is sleeping.");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks.");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // Dog barks.
myDog.sleep(); // This animal is sleeping.
}
}