两个具有相同方法名称和签名的接口.但是由单个类实现,那么编译器将如何识别哪个接口的方法是什么?
例如:
interface A{
int f();
}
interface B{
int f();
}
class Test implements A, B{
public static void main(String... args) throws Exception{
}
@Override
public int f() { // from which interface A or B
return 0;
}
}
Run Code Online (Sandbox Code Playgroud) 有两个接口B,C每个接口都有相同的方法public m1()
class A implements B and C
Run Code Online (Sandbox Code Playgroud)
如果类A必须实现方法m1(),实现的方法将是哪个接口?
在看一些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() {
}
}
Run Code Online (Sandbox Code Playgroud)
类C除非提供 method 的实现,否则无法编译doStuff()。这里的问题是:
1- CdoStuff()类中的方法是接口A方法的实现,还是B类中的抽象方法?更具体地说:JVM 将如何将该函数视为接口或抽象类的调用函数?
doStuff()2-抽象类B中的抽象方法是否被认为是doStuff()接口A中方法的“实现” ?因此,类C必须实现抽象类的版本doStuff()而不是接口的版本?