abstract class B extends A implements C {
// why I have to add implementation here for add() function
}
class A{
void add(){
}
}
interface C{
void add();
}
我期望我不需要在抽象类
add()
中实现B
方法。为什么会出现这种情况?
您的抽象类 B 正在扩展类 A,因此可以访问类 A 的
add()
方法。
抽象类 B 也实现了接口 C,因此必须实现接口的 add()
方法,因为它们是两个不同的方法。
为了避免这种情况,您可以将接口方法实现为抽象方法
public abstract class B extends A implements C{
@Override
public abstract void add();
}
class A{
void add(){}
}
interface C{
void add();
}
,或者你可以让 A 实现 C 并让 B 扩展 A
public abstract class B extends A {
}
class A implements C{
public void add(){}
}
interface C{
void add();
}
第二个选项通过假设您想要一个可以在多个类中重写的添加方法来避免名称冲突方法