抽象类是否必须具有至少一种抽象方法?

有帮助吗?

解决方案

这篇文章和身体的主题提出了两个不同的问题:

  1. 它应该至少有一个抽象成员吗?
  2. 有必要至少有一个抽象成员吗?

#2的答案绝对是否。

#1的答案是主观的,是风格的问题。我个人会说是的。如果您的目的是防止类(没有抽象方法)实例化,那么处理此问题的最佳方法是 privateprotected 构造函数,不是通过标记 abstract.

其他提示

不,没有必要。您经常看到这一点 “模板方法” 设计模式,喜欢 HttpServlet, ,其中每种方法已经具有默认行为,您可以自由覆盖其中一个(或更多)而不是 全部 他们。

在JDK 1.0中,确实有必要在抽象类中具有至少一种抽象方法。此限制在JDK 1.1(1997年?(我旧))中删除,此类课程添加到Java库中,例如 java.awt.event.KeyAdapter.

在C ++中,您至少需要一个纯虚拟函数来制作一个必需的子类,并且至少一个虚拟功能将RTTI添加到类中。通常,使用破坏者是有意义的。

注意当覆盖非抽象方法时,请使用 @Override 是个好主意。它不仅告诉读者有关代码正在尝试做什么的重要信息,而且还将常见错误列出了错别字或不正确参数类型的常见错误。

否 - 您可以在没有任何抽象方法的情况下声明类摘要。对于该类的实例存在可能没有任何意义,或者您可能想确保只能实例化该类的子类(出于何种原因)

如果课堂有 abstract 关于声明的修改器 abstract 班级。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top