繁体   English   中英

从继承的类更改java超类变量

[英]Change java super class variable from inherited class

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

抽象超类可以声明一个抽象方法供子类实现。 例如:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM