阿摩線上測驗 登入

申論題資訊

試卷:104年 - 104 身心障礙特種考試_三等_資訊處理:程式語言#24069
科目:程式語言
年份:104年
排序:0

申論題內容

一、請解釋 Java 語言中,類別與介面(interface)有那些不同,並請舉例加以說明。 (20 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
在 Java 語言中,類別(class)和介面(interface)是兩種不同的結構,它們有各自的用途和特性。以下是類別和介面的主要區別,以及一些例子來說明這些區別。
主要區別
定義與實現:
類別(class):可以定義並實現方法,並且可以包含屬性(變數)。
介面(interface):只能定義方法簽名(即方法的名稱、參數和返回值),不能實現方法(Java 8 之前)。Java 8 引入了預設方法(default methods)和靜態方法(static methods),允許在介面中包含一些實現。
繼承:
類別(class):支持單繼承,即一個類只能繼承自一個父類,但可以實現多個介面。
介面(interface):支持多重繼承,一個介面可以繼承多個其他介面。
抽象程度:
類別(class):可以是具體的(concrete class,有實現的方法)或抽象的(abstract class,有部分或全部抽象的方法)。
介面(interface):本質上是完全抽象的,定義了一組必須由實現類別提供的方法。
訪問修飾符:
類別(class):可以有不同的訪問修飾符(public、protected、private、package-private)。
介面(interface):介面內的方法和屬性默認是 public 的(Java 9 之前)。從 Java 9 開始,介面中允許有私有方法(private methods)。
例子
類別範例
java
複製程式碼
// 定義一個父類 Animal
abstract class Animal {
    String name;
    Animal(String name) {
        this.name = name;
    }
    // 抽象方法
    abstract void makeSound();
    // 具體方法
    void eat() {
        System.out.println(name + " is eating.");
    }
}
// 繼承 Animal 的子類 Dog
class Dog extends Animal {
    Dog(String name) {
        super(name);
    }
    // 實現抽象方法
    void makeSound() {
        System.out.println(name + " says: Woof Woof");
    }
}
介面範例
java
複製程式碼
// 定義一個介面 Pet
interface Pet {
    // 介面方法(默認是 public abstract)
    void play();
}
// 定義另一個介面 Trainable
interface Trainable {
    void train();
}
// 實現介面 Pet 和 Trainable 的類別 Dog
class Dog implements Pet, Trainable {
    String name;
    Dog(String name) {
        this.name = name;
    }
    // 實現 Pet 的方法
    public void play() {
        System.out.println(name + " is playing.");
    }
    // 實現 Trainable 的方法
    public void train() {
        System.out.println(name + " is being trained.");
    }
}
使用範例
java
複製程式碼
public class Main {
    public static void main(String[] args) {
        // 使用類別
        Dog myDog = new Dog("Buddy");
        myDog.makeSound();
        myDog.eat();
        // 使用介面
        Pet myPet = new Dog("Charlie");
        myPet.play();
        Trainable myTrainable = new Dog("Rocky");
        myTrainable.train();
    }
}
結論
類別 用於定義物件的屬性和行為,可以包含具體的實現。
介面 用於定義行為規範,實現多重繼承和解耦。
理解這些概念有助於編寫靈活、可維護的 Java 程式。