如何强制在java中重写方法?

Har*_*non 47 java

我必须创建许多非常相似的类,它们之间只有一种方法不同.所以我认为创建抽象类是实现这一目标的好方法.但是我想要覆盖的方法(例如,方法foo())没有默认行为.我不想保留任何默认实现,强制所有扩展类实现此方法.我该怎么做呢?

Pab*_*ruz 79

您需要在基类上使用抽象方法:

public abstract class BaseClass {
    public abstract void foo();
}
Run Code Online (Sandbox Code Playgroud)

这样,您不指定默认行为,强制继承的非抽象类BaseClass为其指定实现foo.

  • 你的基类`BaseClass`**必须是抽象的. (10认同)
  • 啊对啊!我误解了抽象类canot有非抽象方法.谢谢! (3认同)

Jen*_*ann 11

只需将foo()定义为基类中的抽象方法:

public abstract class Bar {
   abstract void foo();
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Java™教程(接口和继承).


Sea*_*oyd 9

只需将方法抽象化即可.

这将强制所有子类实现它,即使它是在抽象类的超类中实现的.

public abstract void foo();
Run Code Online (Sandbox Code Playgroud)


Buh*_*ndi 5

如果你有一个抽象类,那么制作你的方法(让我们说foo抽象)

public abstract void foo();
Run Code Online (Sandbox Code Playgroud)

然后所有子类都必须覆盖foo.