class 实例变量可以从 Java 中的子 class 中排除吗?

Can a class instance variable be excluded from a subclass in Java?

可能是个愚蠢的问题,但假装 class Node 有一个名为 strength 的实例变量。假装 class Episode,它扩展了 Node,不需要 strength(其他子classes 需要)。还假设有很多 Episode 节点都存储 strength 的实例。 Java 有什么办法可以说 "this subclass does not have a strength variable" 吗?我有点明白为什么这可能是不允许的,但我想我会检查一下。

更新:谢谢大家。正如我所怀疑的那样,这个问题的答案是 "no," 但是创建一个节点的 subclass 和 Episode 不需要的 variables/methods,然后连接另一个(sub)subclasses 需要这些 variables/methods 到那个新的 subclass 会做我想要的。

不,这不可能。你可以有例如NodeStrengthNode class 是的,一个没有 强度 一个有,然后 Episode class 将扩展 Node,其他人将扩展 StrengthNode

此外,考虑到 Java 中的 access control,就好像 strengthNode 中的一个 private 变量,它将无法直接在 Episode class 中访问(仅使用 getter 方法),但它的实例无论如何都会存在于内存中。

好吧,我能想到的唯一方法是,如果您的实例变量存储的对象大小有问题,您可以将参数初始化为 null,或者您可以通过将实例参数指定为瞬态来序列化对象然后序列化它,反序列化它。

这只是一个想法,想不出更接近的东西。

如果您特别不需要精确继承,您可以通过创建自定义工厂并使用反射提取成员变量来绕过它,这也可以。

反正这是我的意见。