从继承的类

时间:2017-02-11 03:39:37

标签: java variables inheritance subclass superclass

每个人,这可能听起来有点奇怪,但我想设置超类变量的值并将其设置为等于子类中的某些内容。例如,我有一个名为SpriteBody的抽象类,在一个名为def的方法中,我想将变量bodyType设置为Block中定义的扩展类。 SpriteBody我该怎么办? 我可以反过来这样做,设置一个超类的值,并在超类的方法中使用该变量,但如果我能以第一种方式执行它,我可以编写更少的代码。

1 个答案:

答案 0 :(得分:1)

抽象超类可以声明子类要实现的抽象方法。例如:

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 ...
    }
}

也就是说,继承是一个雷区,这种方法可能导致基类和子类之间的复杂耦合,这使得很难确保所有子类的行为正确并且保留正确的不变量。因此,尽管上述内容完全有效,但可能值得再看看是否可以使用合成而不是继承来实现目标。