例として、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(); // 新しいメソッド
この手法により、既存のコードを変更せずに新しい機能を導入でき、柔軟性が向上します。