インタビューで私は以下の質問をされました。
メソッドを持つクラスAがあり、メソッドdrawShape()
を持つ別のクラスBがあるとしdrawSquare()
ます。
ここで、AとBの両方を拡張する3番目のクラスCがあります。
最後に、私のクラスのCIでは、これらの両方のメソッドが必要です。
これらの両方のメソッドを同時に取得するにはどうすればよいですか?
Now there is a third class C that extends both A and B
Javaでは、複数のクラスに拡張することはできません。
必要に応じて、BをAに拡張してから、CをBに拡張できます。このようにして、両方の方法にアクセスできるようになります。
Javaはサポートされていないため、拡張しないでください。代わりに、インターフェイスを使用できます。
interface IA{
void drawshape();
}
inerface IB{
void drawsquare();
}
class A implements IA{
...
}
class B implements IB{
...
}
class C implements IA,IB{
private A a;
private B b;
void drawshape(){
a.drawshape()
}
void drawsquare(){
b. drawsquare()
}
}
Javaは複数のクラス継承をサポートしていません。クラスは他の1つのクラスのみを拡張できます。
代わりに、Composition(クラス内にクラスがある)を使用して、求められたことを達成できます。
Class C {
A a = new A();
B b = new B();
...
}
これで、またはC
を実行していずれかの方法にアクセスできます。a.drawShape()
b.drawSquare()