让所有类都具有继承性是一种好习惯吗

时间:2020-01-24 23:55:22

标签: java

我试图为我的一个较早的Java游戏项目绘制一个UML图。游戏工作正常,但我意识到许多类都没有继承。既然游戏可以运行,我知道继承程序运行的类并不是绝对必要的。我只是想知道这可能是个好主意还是Java约定。 提前致谢!

2 个答案:

答案 0 :(得分:1)

不用担心,您所有的类仍然从java.lang.Object继承

答案 1 :(得分:0)

我只是想知道这是一个好主意还是Java约定。

如果建模没有表明有必要的话,那么让一个类extend并不是一个好主意。当然,没有达到这种效果的Java约定。

在需要的地方使用继承。如果不需要,请勿使用。

如前所述,所有Java类 1 (和数组类型)都以java.lang.Object作为其最终超类。您的应用程序的类都将具有一个超类,即使它们没有显式地extend


不需要时对extend有害吗?

我会这样说。

(出于争论的目的)假设extend不受建模或模型实现的功能“需求”的保证。

  1. 充其量,不必要的extends是多余的。

  2. extends具有误导性并且浪费时间。这可能会导致将来的读者花时间研究继承的(假定的)含义。即为什么存在,实现了什么。因为Java程序员假定那里的继承关系是有目的的。

  3. 在晦涩的情况下,可能会引起问题。例如,将来的维护者可能会误解通用超类的目的(缺少),并开始向其添加不合适的功能。当然,这主要归咎于未来的开发人员,但他/她可以将共同的超类的存在作为推动因素。

  4. 由于不必要的方法分派,可能存在性能问题。 (这将取决于Java编译器。)

  5. 如果您需要使用(例如)像Hibernate这样的对象关系映射技术将类映射到数据库表,则可能会出现问题。 Java继承使指定ORM映射的问题复杂化。如果不需要的话,您就不需要这种并发症。


1-...除了Object本身。