抽象類別
抽象就是「讓你知道這個類別有什麼功能,但卻不告訴你實作細節」。
抽象的核心概念是從具體的實體中抽取共通的特徵,以便設計出一個通用的模板,而具體的細節則留待子類別來實作。抽象類別定義了這些共通特徵或行為,但不提供具體的實作,因為這些細節可能因子類別的不同而有所差異。
我們知道所有動物都有「移動」這個行為,但具體的移動方式取決於每種動物。
例如:
抽象類別的特性:
class
時,加上 abstract
關鍵字// 抽象類別
abstract class Animal {
// 抽象方法,不清楚具體的移動方式
abstract void move();
}
繼承抽象類別
當一個類別 extends(繼承)抽象類別時,必須實作該抽象類別中所有的抽象方法,除非這個子類別本身也是抽象的。
abstract class Animal {
// 抽象方法
abstract void makeSound();
// 具體方法
void sleep() {
System.out.println("Sleeping...");
}
}
class Dog extends Animal {
// 必須實作抽象方法
@Override
void makeSound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound();
}
}
// output: Bark