私はこのJavaインターフェイスを持っています:
public interface Box {
public void open();
public void close();
}
このインターフェースは、このクラスによって拡張されます。
public class RedBox implements Box {
public void open() {
}
public void close() {
}
}
問題は、将来、BoxInterfaceも実装する他のクラスを追加しようとしていることです。これらの新しいクラスには独自のメソッドがあります。たとえば、クラスの1つにはputInBox()メソッドがありますが、putInBox()メソッドをBoxインターフェイスに追加すると、putInBox(の空の実装も追加する必要があります。 )上記のRedBoxクラスのようなBoxインターフェイスを実装した以前のクラスへのメソッド。
Boxインターフェイスを実装したクラスのオブジェクトを受け取るクラスCallerがあるため、ボックスインターフェイスにputInBox()を追加しています。例:
public class Caller {
private Box box;
private int command;
public Caller(Box b) {
this.box = b;
}
public void setCommandID(int id) {
this.command = id;
}
public void call() {
if(command == 1) {
box.open();
}
if(command == 2) {
box.close();
}
// more commands here...
}
}
Caller c = new Caller(new RedBox());
c.call();
Box Interfaceを実装した以前の各クラスに新しいメソッドの空の実装を追加することを強制されることなく、新しいクラスにBoxInterfaceを実装するにはどうすればよいですか。