阿摩線上測驗 登入

申論題資訊

試卷:102年 - 102年專門職業及技術人員高等建築師、技師、第二次食品技師暨普通不動產經紀人、記帳士考高等_資訊技師#29217
科目:程式設計
年份:102年
排序:0

申論題內容

三、JAVA 程式設計中,有“is-a”、“has-a”兩種類別的關係,請分別解釋之,並請分別寫 出其 JAVA 程式框架。(16 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
在 Java 程式設計中,“is-a”和“has-a”是用來描述類別之間關係的兩種基本概念,它們分別對應於繼承和組合。
“is-a”關係
“is-a”關係是通過繼承來實現的,表示一種類別屬於另一種類別的特例,或者一種類別是另一種類別的子類。這種關係表達了類別間的一種層次結構,它允許子類繼承父類的屬性和方法。
java
Copy code
class Animal {
    void eat() {
        System.out.println("This animal eats food.");
    }
}
class Dog extends Animal {
    void bark() {
        System.out.println("The dog barks.");
    }
}
public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.eat(); // 繼承自 Animal
        myDog.bark();
    }
}
在這個例子中,Dog 是 Animal 的一種,所以我們說 Dog 和 Animal 之間是一個 “is-a” 關係。
“has-a”關係
“has-a”關係通常是通過組合或聚合來實現的,表示一種類別包含另一種類別的實例作為它的一部分。這種關係用於表示類別之間的關聯,它允許一個類別具有另一個類別的屬性和行為,而不是通過繼承獲得。
java
Copy code
class Engine {
    void start() {
        System.out.println("Engine starts.");
    }
}
class Car {
    // Car 有一個 Engine
    private Engine engine;
    Car(Engine engine) {
        this.engine = engine;
    }
    void startEngine() {
        engine.start(); // 委託給 Engine
    }
}
public class Main {
    public static void main(String[] args) {
        Engine engine = new Engine();
        Car myCar = new Car(engine);
        myCar.startEngine();
    }
}
在這個例子中,Car 有一個 Engine,所以我們說 Car 和 Engine 之間是一個 “has-a” 關係。
總結來說,“is-a”關係用於表示繼承關係,是一種類型的關係;而“has-a”關係用於表示組合或聚合關係,是一種擁有關係。這兩種關係是物件導向設計中非常重要的概念,它們有助於構造系統的結構和設計類之間的交互。