【发布时间】:2019-04-24 17:25:41
【问题描述】:
我有 10 个 Java 类,它们具有相同的字段和相同的构造函数来初始化这些字段。我希望将重复的代码提取到一个超类中,然后所有 10 个类都应该扩展该超类。我想用 Intellij Idea 进行重构。
通过使用 Refactor > Extract > Superclass,我能够从 10 个类之一中提取所需的代码到一个名为 BaseClass 的超类中。现在,我想使用 Intellij 自动使剩余的 9 个类扩展 BaseClass。我该怎么做?
【问题讨论】:
-
没有一个工具可以直接做到这一点——@Peter 是正确的,我在此基础上对他的答案投了赞成票。不过值得注意的是,您应该只在需要多态性的情况下使用继承——研究 Liskov 的替换原则以了解原因。此外,子类化非常困难,通常不需要。当你达到 10 个子类时,你必须开始质疑你的设计(并不是说它总是错误的,只是大量的子类是需要仔细审查的危险信号)。签出代码审查堆栈溢出。
-
我能想到很多情况,其中 10 个子类是合理的设计。在大多数情况下,父类将是抽象的,在这种情况下 Liskov 并不真正适用;子类的实例不能替代父类的实例,因为没有这样的实例。
标签: intellij-idea