iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0

抽象類別

抽象就是「讓你知道這個類別有什麼功能,但卻不告訴你實作細節」。

抽象的核心概念是從具體的實體中抽取共通的特徵,以便設計出一個通用的模板,而具體的細節則留待子類別來實作。抽象類別定義了這些共通特徵或行為,但不提供具體的實作,因為這些細節可能因子類別的不同而有所差異。

我們知道所有動物都有「移動」這個行為,但具體的移動方式取決於每種動物。
例如:

  • 鳥類會飛翔。
  • 魚類會游泳。
  • 狗或貓會奔跑或行走。
    因此可以定義一個名為「動物Animal」的抽象類別,並在其內部寫一個名為「移動」的抽象方法。

抽象類別的特性:

  1. 寫法為宣告 class 時,加上 abstract 關鍵字
    例如:
// 抽象類別
abstract class Animal {
    // 抽象方法,不清楚具體的移動方式
    abstract void move();
}
  1. 抽象類別只能被繼承,不能被實例化
  2. 可以包含抽象方法(方法沒有實作,只定義方法名稱和參數)及非抽象方法
  3. 可以包含建構式和靜態方法

繼承抽象類別
當一個類別 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

上一篇
【Day16】Java - 類別的繼承(二) - super關鍵字
下一篇
【Day18】Java - interface 介面
系列文
從免費網路資源中入門java30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言