いくつかの OOP 資料を見ているときに、次の質問を考えて、少し混乱しました。
次のインターフェース、抽象クラス、および具象クラスを持つことを検討してください。
package one;
public interface A {
void doStuff();
}
package one;
public abstract class B implements A {
public abstract void doStuff();
}
class C extends B{
public void doStuff() {
}
}
class Cは、 method の実装を提供しない限りコンパイルされませんdoStuff()
。ここでの質問:
1-doStuff()
クラスCのメソッドは、インターフェイスAのメソッドの実装ですか、それともクラスBの抽象メソッドの実装ですか? より具体的には、JVM は関数をインターフェースまたは抽象クラスの呼び出された関数としてどのように扱うでしょうか?
2-doStuff()
抽象クラスBdoStuff()
の抽象メソッドは、インターフェースAのメソッドの「実装」と見なされますか? そのため、クラスCdoStuff()
がインターフェイスの ? の代わりに抽象クラスのバージョンを実装することが必須になります。