可能是一个愚蠢的问题,但假装类Node有一个名为 strength 的实例变量。并且假装扩展Node的类Episode不需要 strength (其他子类也可以)。还假设有很多Episode节点都存储 strength 的实例。在Java中有没有办法说“这个子类没有强度变量”?我有点看到为什么这可能不被允许,但我想我会检查。
更新:谢谢大家。我怀疑,这个问题的答案是“不”,但是使用Episode不需要的变量/方法创建Node的子类,然后将需要这些变量/方法的其他(子)子类连接到新的子类正是我想要的。
答案 0 :(得分:9)
不,这是不可能的。你可以有例如Node
和StrengthNode
类,一个没有力量,另一个有,Episode
类将扩展Node
,其他类将扩展StrengthNode
}。
另外,考虑到Java中的access control,好像 strong 是private
中的Node
变量一样,Episode
中的.
变量无法访问直接1}}类(只使用getter方法),但它的实例无论如何都会存在于内存中。
答案 1 :(得分:1)
那么我能想到的唯一方法是,如果您的实例变量存储的对象大小存在问题,您可以将参数初始化为null,或者您可以通过指定实例参数来序列化对象是瞬态的并且去序列化它,反序列化。
这只是一个想法,不能想到更近的事情。
如果您特别不需要完全继承,那么您可以创建自定义工厂并使用反射提取成员变量,这也可以。
无论如何,这是我的意见。