方法覆寫與遞迴導論

Java 的輸入/輸出與串流

Alex Liu

Software Development Engineer

定義基底類別

  • Animal 類別代表通用的動物
    class Animal {
      void makeSound() {
          System.out.println("Animal sound");
      }
      public static void main(String[] args) {
          Animal a = new Animal();
          a.makeSound(); // Output: Animal sound
      }
    }
    
Animal sound
Java 的輸入/輸出與串流

理解繼承:extends

// 使用 `extends` 建立 `Animal` 的子類別 `Dog`
class Dog extends Animal {
    void bark() {System.out.println("Bark");}
}
public static void main(String[] args) {
    Dog d = new Dog(); // 建立繼承自 Animal 的 Dog 物件實例
    d.makeSound();
    d.bark();
}
  • 將兩種叫聲各印一行:
Animal sound
Bark
Java 的輸入/輸出與串流

在 Java 中覆寫方法

class Cat extends Animal {
    @Override // 使用 `@Override` 覆寫 `.makeSound()` 的行為
    void makeSound() {
        System.out.println("Meow");
    }
}
public static void main(String[] args) {
    Cat c = new Cat(); // 建立繼承自 Animal 的 Cat 物件實例
    c.makeSound(); // 呼叫已覆寫的 `makeSound()` 方法
}
Meow
Java 的輸入/輸出與串流

理解遞迴

  • 方法呼叫自身來解題
  • 需要一個基底情況(base case)避免無限遞迴
public class RecursionExample {
    static void countdown(int n) {
        // Base case
        if (n == 0) return; 
        System.out.println(n);
        // Recursive call
        countdown(n - 1); 
    }
}
Java 的輸入/輸出與串流

遞迴範例

  • 範例用法
    public static void main(String[] args) {
      countdown(5);
    }
    
  • 遞迴在到達基底情況 0 時停止
    5
    4
    3
    2
    1
    
Java 的輸入/輸出與串流

重點總結

  • extends 啟用繼承

  • @Override 可修改繼承行為

  • 遞迴將問題拆成更小步驟

    • 基底情況可避免無限遞迴
Java 的輸入/輸出與串流

一起來練習吧!

Java 的輸入/輸出與串流

Preparing Video For Download...