のメソッドを呼び出すために使用されたスーパークラス参照を決定しました。これは何度か質問されました。&は、どうやってそれがなぜ起こるのか完全に困惑しています。サブクラス
ここではシナリオです:
interface IntA {
void someMethod();
}
interface IntB {
void someMethod();
}
2つの単純なインタフェースは、単純なクラスで以下に
class ClassAB implements IntA,IntB {
@Override
public void someMethod(){
//some logic
}
}
を実装その後、我々はそうのような&使用をインスタンス化できます。
IntA a = new ClassAB();
a.someMethod();
または他のインタフェースを介して:
IntB b = new ClassAB();
b.someMethod();
今の質問はの実装でありますsomeMethod()
の場合、IntA
の参照を使用しているか、IntB
の参照を使用してを呼び出しているか調べることはできますか。したがって、異なるロジックを実行します。
正直なところ、これは間違った質問です。私はなぜ&がそれをどうやって行うのか理解していない。インタフェースの観点からは、機能シグニチャ&の条件を満たす実装があり、それはすべて重要です。 IntA
& IntB
が異なる結果を期待する場合は、2つの異なるクラスに実装する必要があります。
私はこのシナリオを2回見てきました。それで、なぜ私が頼んでいるのですか?本当に決定する方法はありますか? C/C++
のような他の言語でそれを行うにはいくつかの方法がありますか?
インターフェイスが異なる機能を必要とする場合は、異なるメソッド名を使用する必要があります。 –
重要な場所にはどのようなシナリオがありますか? – daniu
@daniu面接の質問でした。私は月に2人のランダムな面接者によってこの同じ質問に出くわしました。私が思った最初の男は間違った考え方だった。それで2人目の男が同じことを尋ねたとき、私は少し疑問に思った。 – Vineet