インターフェイスにコーディングしています。
インターフェイスAとそれを実装するクラスBがあります。
Cで拡張することでB の機能をオーバーライドできると言われましたが、 BにもCにも触れず、後でBを構成ファイルのAの実装クラスとしてCに置き換えるように求められました。
Aでは利用できないメソッドが必要だと思うので、 Cで実装できるメソッドをAに追加する必要があります。しかし、私はAに触れることはできません。
誰かがそれをどのように行うことができるかを手伝ってもらえますか?
ありがとう。
編集: コード例:
A.java
public interface A {
void X();
void Y();
}
B.java
public class B implements A {
public void X() {//something interesting}
public void Y() {//something not very interesting}
}
A
どちらにも触れることが許されなかったか、B
別のクラスを作成C
して B から拡張しなければならなかったためです。
C.java
public class C extends B {
public void Y() {//overriding B's not very interesting Y and making it interesting}
}
今、私 は自分のことを行うためvoid Z()
にC.javaに別のメソッドが必要ですが、参照変数を使用しているときにC.javaA
だけにメソッドを追加するとインターフェイスにコーディングしているため、呼び出すことができないため、インターフェイスで次のように宣言する必要がありますそのように使用するのは良いことですが、そうすると、許可されていないものに触れなければなりません。したがって、この問題を解決する方法は、私が尋ねようとしてきたことです。A's
Z()
void Z()
A
A
したがって、基本的に、次のようなことはできません。
A a = new C();
a.Z(); //can't do this
AやBに触れずにそのようなことを達成する方法はありますか?