我们可以在 Java 中将重写方法作为抽象方法吗?

-2 java

如果我将父类的方法覆盖到子类,那么是否可以将此子类覆盖的方法设为抽象?

Ste*_*n C 5

Java 语言规范(第8.4.3.1 节)声明如下:

“非抽象的实例方法可以被抽象方法覆盖。”

因此,您尝试做的事情是允许的。例如:

public class Parent {
   public void method() { }
}

public abstract class AbstractChild extends Parent {
   public abstract void method();   // This is permitted.
}
Run Code Online (Sandbox Code Playgroud)

引用的文本取自 JLS 的 Java 8 版本,但据我所知,从 Java 1.0 开始的所有 Java 版本都是如此。

也允许抽象方法覆盖抽象方法。

Parent是接口而不是类时,甚至当接口中methoddefault实现时,也允许这样做。

  • 我见过这种重写用于强制执行 `Object.toString()` 重写(因为此方法必须返回当前对象的字符串表示形式,而不是父对象的字符串表示形式。) (3认同)