gpt4 book ai didi

Java抽象类实现了一个接口(interface),两者有相同的方法

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:37 24 4
gpt4 key购买 nike

在看一些面向对象的资料时,我想到了一个让我有点困惑的问题:

考虑具有以下接口(interface)、抽象类和具体类:

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 类不会编译,除非它提供方法 doStuff() 的实现。这里的问题:

1-类C中的doStuff()方法是接口(interface)A方法的实现,还是抽象的B 类中的方法?更具体地说:JVM 将如何将函数视为接口(interface)或抽象类的调用函数?

2-抽象类B中的抽象方法doStuff()是否被认为是doStuff()方法的“实现”在接口(interface) A 中?所以这使得 C 类必须实现抽象类版本的 doStuff() 而不是接口(interface)的 ?

最佳答案

对于问题#1:类C中的doStuff方法是对B和C的doStuff方法声明的实现。因为抽象类B和接口(interface)A中的doStuff方法声明具有相同的签名。实际上,如果B实现了C,就不需要再声明doStuff方法了。

对于问题#2:不,B 中的 doStuff 只是一个声明,而不是方法实现。如果 B 没有方法实现或额外的方法声明,则不需要类 B。基本上,抽象类是一种包含高级逻辑的模板,以方便其子类使用。

关于Java抽象类实现了一个接口(interface),两者有相同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com