2025/10/1

台綜大B30 計概114 第三題 解答 台灣綜合大學, 資訊管理系, 轉學考

Q3  請說明物件導向程式設計 (OOP) 中的封裝 (encapsulation)、多型 (polymorphism) 以及多載 (overloading) 的特徵。

🔹 1. 封裝 (Encapsulation)

  • 定義
    將資料 (屬性) 與操作這些資料的方法 (函式) 打包成一個物件,並透過存取修飾子 (如 private, public, protected) 來控制外部存取。

  • 特徵

    • 隱藏內部細節,只暴露必要的介面 (interface)。

    • 提高程式的 安全性(避免外部直接修改內部資料)。

    • 增加 模組化與可維護性

  • 範例 (Java)

    class BankAccount { private double balance; // 封裝在物件內,不可直接存取 public void deposit(double amount) { balance += amount; } public double getBalance() { return balance; } }

🔹 2. 多型 (Polymorphism)

  • 定義
    「相同的方法呼叫,依物件型態不同而有不同行為」。

  • 特徵

    • 方法覆寫 (Overriding):子類別重新定義父類別的方法。

    • 執行時期 (runtime) 會根據物件的實際型態決定呼叫哪個方法。

    • 提升 程式彈性可擴充性

  • 範例 (Java)

    class Animal { void speak() { System.out.println("Some sound"); } } class Dog extends Animal { @Override void speak() { System.out.println("Woof!"); } } class Cat extends Animal { @Override void speak() { System.out.println("Meow!"); } } // 多型展現 Animal a1 = new Dog(); Animal a2 = new Cat(); a1.speak(); // Woof! a2.speak(); // Meow!

🔹 3. 多載 (Overloading)

  • 定義
    在同一個類別中,方法名稱相同,但參數型態或數量不同

  • 特徵

    • 屬於 編譯時期多型 (compile-time polymorphism)

    • 不需要繼承關係。

    • 讓方法更直覺,根據輸入型態自動選擇正確版本。

  • 範例 (Java)

    class MathUtil { int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } } MathUtil m = new MathUtil(); System.out.println(m.add(3, 5)); // 呼叫 int 版本 System.out.println(m.add(2.5, 4.3)); // 呼叫 double 版本 System.out.println(m.add(1, 2, 3)); // 呼叫三參數版本

沒有留言:

張貼留言