在查看一些 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() {
}
}
C类不会编译,除非它提供了 method 的实现doStuff()
。这里的问题:
1-doStuff()
类C中的方法是接口A的方法的实现,还是用于类B中的抽象方法?更具体地说:JVM如何将函数视为接口或抽象类的调用函数?
2-doStuff()
抽象类BdoStuff()
中的抽象方法是否被认为是接口A中方法的“实现” ?所以这使得C类必须实现抽象类的版本doStuff()
而不是接口的?