Java 如何在超类方法中使用子类的静态字段
我在我的超类上有一个代码,它需要从子类计算宽度和高度Java 如何在超类方法中使用子类的静态字段,java,Java,我在我的超类上有一个代码,它需要从子类计算宽度和高度 public SuperClass{ public Vector2 getCenter(){ float x = this.position.x + WIDTH/2; float y = this.position.y + HEIGHT/2; return new Vector2(x, y); } public void setCenter(Vector2 positi
public SuperClass{
public Vector2 getCenter(){
float x = this.position.x + WIDTH/2;
float y = this.position.y + HEIGHT/2;
return new Vector2(x, y);
}
public void setCenter(Vector2 position){
float x = position.x - WIDTH/2;
float y = position.y - HEIGHT/2;
setPosition(new Vector2(x, y));
}
}
我必须使用宽度和高度的静态字段,但它的编译错误导致超类仍然不知道宽度和高度在哪里。我可以在子类中重写静态字段吗 你不能那样做。多态性的全部要点是超级类对子类一无所知 换句话说:依赖关系只向上流动。子类依赖于它的超类,但反之亦然 如果有的话,您可以这样做:
public abstract class SuperClass {
protected abstract int getWidth();
然后在基类算法中调用getWidth;然后,您的子类必须实现这些方法——这就是按照开放/封闭原则进行适当OO设计的方式
因此,这里的解决方案是:您后退一步,对OO设计进行更多的阅读;如何做到这一点;以及它在Java中的实际工作方式。作为记录:你真的不想使用静态——这是好的OO设计中的一个反常现象;只有当你有很好的理由这样做时才应该使用