只有子类覆盖Java中的接口方法

Max*_*tin 0 java interface

我知道实现某些类的每个类Interface都必须覆盖它的所有方法.除非当前的课程是abstract.

正如您所见,在下面提到的代码模板中演示了这一点.

在我的情况下只ChildClass覆盖foo()方法.

接口

public interface MyItf {
   public void foo();
}
Run Code Online (Sandbox Code Playgroud)

家长班

public abstract class ParentClass implements MyItf {

}
Run Code Online (Sandbox Code Playgroud)

儿童班

public class ChildClass extends ParentClass{

  @Override
  public void foo() {

  }
}
Run Code Online (Sandbox Code Playgroud)

但是这个实现要求我设置ParentClassabstract.

如果我想离开ParentClass单班而不抽象怎么办?

有没有人有其他方式只有孩子使用MyItf而不是父类?

谢谢,

[编辑]

基于所有答案我在我的案例中找到了解决方案:

我编写了一个游戏,我有140个子类.

为了使代码更灵活,我需要创建"空"接口并允许所有孩子实现它,如:

 public interface UnknownItf {

 }
Run Code Online (Sandbox Code Playgroud)

所以下次如果我需要为孩子们​​添加新界面,我会写:

public interface UnknownItf extends NewItf{
   ///...
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

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

嗯,你不能 - 你已经声明它实现了接口,但你没有提供任何实现.

换句话说,您希望此代码能做什么?

MyItf itf = new ParentClass();
itf.foo();
Run Code Online (Sandbox Code Playgroud)

如果ParentClass是具体的,那就必须编译......但你没有提供任何实现foo.

如果您只想实现子类MyItf,那么就不要声明超类实现它.如果你试图强制所有子类实现它,而不是超类,并且你不希望超类是抽象的,那么我担心没有办法做到这一点 - 它甚至会是一个有问题的设计如果可能的话.(它会有用吗?)