我是否应该创建一个我永远不会实例化的超类,只是为了铸造不同的子类?

Shall I create a Superclass I will never instance just for casting different subclasses?

我刚开始学习Java,我有这个问题。假设我有 classes A 和 B。我需要一个可以是对象类型 A 或类型 B 的变量。我相信为 A 和 B 创建一个新的 Superclass P 会成功。但我永远不会创建 P 的实例,我将始终使用类型 A 或 B 对象。

我想也许对 P 使用抽象 class 会更有意义,因为它的实例永远不会被创建,但我不能将 A 或 B 转换为它。那么,这是唯一正确的做法吗?

提前致谢。

您应该创建一个 interface,而不是超类。

经验法则是创建一个界面。

如果这两个 类 确实具有共同的行为,那么您实际上可以使用抽象超类来在该超类中实现共同的实现。

虽然创建这样的超类时要谨慎,因为通常 super类 是基于懒惰而不是由于 类 之间真正的共同关系而创建的。

对于具有接口或超类的情况,下面的陈述总是正确的

P object = new A(); P object2 = new B();