[英]Java Reflection: GetDeclaredFields() method call in inherited class from super class
[英]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.