gpt4 book ai didi

java - 如何强制接口(interface)出现在所有继承级别上

转载 作者:行者123 更新时间:2023-12-01 19:46:53 25 4
gpt4 key购买 nike

我有一个接口(interface)myIf,我希望它出现在所有继承级别上。这个想法是 fooEverywhere 需要位于 GrandParentParent 以及更多的子级。所以出现了这个明显的模式:

  public interface myIf {
void fooEverywhere ();
}

public class GrandParent implements myIf {

@Override
public void fooEverywhere() { /* Actions */ }

}

public class Parent extends GrandParent implements myIf {
@Override
public void fooEverywhere() { super.fooEverywhere(); /* And Other actions */ }
}

但是,如果我忘记/错过Parent,如下所示:

  public class Parent extends GrandParent /*implements myIf*/ {
// @Override
// public void fooEverywhere() { super.fooEverywhere(); /* And Other actions */ }
}

Java 仍然没问题,因为 parentObject.fooEverywhere() 会找到 GrandParent.fooEverywhere()

因此,我如何重新设计它以强制 Java 识别 fooEverywhere 必须位于 Parent 中?

最佳答案

简单的回答是你不能。

更长的答案是你不能,因为你已经在继承链中更高的类中提供了实现。一旦它在链中的更高层实现,它就会被实现。

您可以创建一个抽象类作为实现接口(interface)的祖先,然后在抽象祖先上将接口(interface)方法声明为抽象。然后,GrandParent 和 Parent 都将扩展 AbstractParent,并且必须提供自己的被声明为抽象的接口(interface)方法的实现。

注意,Java 中的接口(interface)通常是 Pascal 大小写,即 MyIf,而不是 myIf。此外,无需在父类已声明其实现接口(interface)的后代类中实际使用 Implements 关键字。

关于java - 如何强制接口(interface)出现在所有继承级别上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898268/

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