017 インターフェイス(インターフェイスの拡張) 015 解答例

例として、Javaが提供している標準の List インターフェースに新しいメソッドを追加する拡張インターフェイスを作成するとします。

import java.util.List;

// 拡張インターフェイスの作成
interface ExtendedList<T> extends List<T> {
    // 新しいメソッドの追加
    void customMethod();
}

// 使用例
class ExampleClass implements ExtendedList<String> {
    @Override
    public void customMethod() {
        // 新しいメソッドの実装
    }

    // List インターフェイスのメソッドの実装
    @Override
    public int size() {
        // 実装
        return 0;
    }

    @Override
    public boolean isEmpty() {
        // 実装
        return false;
    }

    // 他の List インターフェイスのメソッドも実装...
}

この例では、ExtendedList インターフェイスが List インターフェイスを拡張し、新しいメソッド customMethod を追加しています。そして、ExampleClass クラスが ExtendedList インターフェイスを実装しています。これにより、ExampleClass は既存の List メソッドを使用できるだけでなく、新しいメソッドも利用できるようになります。

既存のインターフェイスの拡張

既存のJavaインターフェイスに新しいメソッドや機能を追加することができます。これにより、既存のコードを変更せずに新しい機能を追加できます。以下に、この手法の概要を解説します。

新しい拡張インターフェイスの作成:

既存のインターフェイスを拡張する新しいインターフェイスを作成します。
例えば、以下のようにして、ExistingInterface を拡張する ExtendedInterface を作成します。

interface ExtendedInterface extends ExistingInterface {
    // 新しいメソッドや機能を追加
    void newMethod();
}

新しいメソッドの実装:

新しいメソッドは、新しい拡張インターフェイスを実装するクラスで具体的な実装が行われます。

class MyClass implements ExtendedInterface {
    // 既存のメソッドの実装

    // 新しいメソッドの実装
    @Override
    public void newMethod() {
        // 実装
    }
}

既存のクラスの変更不要:

既存のクラスは変更する必要がありません。そのまま新しい拡張インターフェイスを実装することができます。
既存のクラスでの利用:

既存のクラスは、新しい拡張インターフェイスを実装することで、既存の機能にアクセスしつつ、新しい機能も利用できます。

ExistingInterface obj = new MyClass();
obj.existingMethod(); // 既存のメソッド
((ExtendedInterface) obj).newMethod(); // 新しいメソッド

この手法により、既存のコードを変更せずに新しい機能を導入でき、柔軟性が向上します。

「017 インターフェイス」問題集リスト