gpt4 book ai didi

java - Java中只有子类重写接口(interface)方法

转载 作者:行者123 更新时间:2023-12-01 07:08:29 24 4
gpt4 key购买 nike

我知道每个实现某些Interface的类都必须重写其所有方法。除非当前类是抽象类。

正如您在提到的代码模板中所看到的那样。

在我的例子中,只有 ChildClass 覆盖 foo() 方法。

界面

public interface MyItf {
public void foo();
}

父类

public abstract class ParentClass implements MyItf {

}

子类

public class ChildClass extends ParentClass{

@Override
public void foo() {

}
}

但是这个实现要求我将 ParentClass 类设置为 abstract

如果我想将 ParentClass 保留为单个类而不是抽象类怎么办?

有没有人有其他方法,只有使用MyItf而不使用父类?

谢谢,

[编辑]

根据所有答案,我找到了针对我的案例的解决方案:

我编写了一个游戏,其中有 140 个子类。

为了使代码更加灵活,我需要创建“空”接口(interface)并允许所有子级实现它,例如:

 public interface UnknownItf {

}

所以下次如果我需要为 child 添加新的界面,我会写:

public interface UnknownItf extends NewItf{
///...
}

最佳答案

What if I want to leave ParentClass to be single class and not abstract?

你不能 - 你已经声明它实现了该接口(interface),但你没有提供任何实现。

换句话说,您希望这段代码做什么?

MyItf itf = new ParentClass();
itf.foo();

如果 ParentClass 是具体的,则必须编译...但您没有提供 foo 的实现。

如果您只想子类实现MyItf,那么就不要声明父类(super class)实现它。如果您试图强制所有子类实现它,而不是父类(super class),并且您不希望父类(super class)是抽象的,那么恐怕没有办法做到这一点 - 而且即使这是可能的,这也是一个值得怀疑的设计。 (它有什么用处?)

关于java - Java中只有子类重写接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548071/

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