有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中,只有子类重写接口方法

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

正如你所看到的,下面提到的代码模板演示了这一点

在我的例子中,只有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个儿童班

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

 public interface UnknownItf {

 }

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

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

共 (1) 个答案

  1. # 1 楼答案

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

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

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

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

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

    如果只希望子类实现MyItf,那么就不要声明超类实现了它。如果你试图强迫所有的子类来实现它,而不是超类,并且你不希望超类是抽象的,那么我恐怕没有办法做到这一点——即使这是可能的,这也是一个有问题的设计。(它有什么用处?)