抽象类应该至少有一种抽象方法吗?
-
21-09-2019 - |
题
抽象类是否必须具有至少一种抽象方法?
解决方案
这篇文章和身体的主题提出了两个不同的问题:
- 它应该至少有一个抽象成员吗?
- 有必要至少有一个抽象成员吗?
#2的答案绝对是否。
#1的答案是主观的,是风格的问题。我个人会说是的。如果您的目的是防止类(没有抽象方法)实例化,那么处理此问题的最佳方法是 private
protected
构造函数,不是通过标记 abstract
.
其他提示
不,没有必要。您经常看到这一点 “模板方法” 设计模式,喜欢 HttpServlet
, ,其中每种方法已经具有默认行为,您可以自由覆盖其中一个(或更多)而不是 全部 他们。
在JDK 1.0中,确实有必要在抽象类中具有至少一种抽象方法。此限制在JDK 1.1(1997年?(我旧))中删除,此类课程添加到Java库中,例如 java.awt.event.KeyAdapter
.
在C ++中,您至少需要一个纯虚拟函数来制作一个必需的子类,并且至少一个虚拟功能将RTTI添加到类中。通常,使用破坏者是有意义的。
注意当覆盖非抽象方法时,请使用 @Override
是个好主意。它不仅告诉读者有关代码正在尝试做什么的重要信息,而且还将常见错误列出了错别字或不正确参数类型的常见错误。
否 - 您可以在没有任何抽象方法的情况下声明类摘要。对于该类的实例存在可能没有任何意义,或者您可能想确保只能实例化该类的子类(出于何种原因)
如果课堂有 abstract
关于声明的修改器 abstract
班级。
不隶属于 StackOverflow