从继承 class 更改 java 超级 class 变量

Change java super class variable from inherited class

大家,这听起来可能有点奇怪,但我想设置一个超级 class 变量的值,并将其设置为等于子 class 中的值。例如,我有一个名为 SpriteBody 的抽象 class,在一个名为 def 的方法中,我想将变量 bodyType 设置为在 [=16] 中定义的内容=] 扩展 SpriteBody 我怎么能做这样的事情? 我可以反过来做,设置 super class 的值,并在 super class 的方法中使用变量,但如果我能先这样做,我可以写更少的代码方式。

抽象superclass可以声明一个抽象方法供subclass实现。例如:

public abstract class SpriteBody {
    private BodyType bodyType;

    protected abstract BodyType determineBodyType();

    public void def() {
        bodyType = computeBodyType();
    }
}

public class Block extends SpriteBody {
    @Override
    protected BodyType determineBodyType() {
        // ... TODO ...
    }
}

也就是说,继承有点雷区,这种方法会导致基础 class 和子 classes 之间的复杂耦合,这会使它变得非常困难确保所有子 classes 行为正确并保留正确的不变量。因此,虽然上述内容完全有效,但可能值得再看一看,看看您是否可以使用组合而不是继承来实现您的目标。