[英]Java: How to Create an instance of a subclass from with a Static method of the super class
[英]How do I use static field of subclass in super class method
我的超类上有一个代码,希望子类的WIDTH和HEGHT可以计算
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));
}
}
我必须使用WIDTH和HEIGHT的静态字段,但是它编译错误导致超类仍然不知道WIDTH和HEIGHT在哪里。 我可以在子类中覆盖静态字段吗?
你不能那样做。 多态的全部意义在于,超级类对子类一无所知 !
换句话说:依赖关系仅“向上”流动。 子类取决于其父类,但反之则不然。
如果有的话,您可以执行以下操作:
public abstract class SuperClass {
protected abstract int getWidth();
然后在基类算法中调用getWidth(); 然后您的子类必须实现这些方法-这就是您实际上遵循“ 打开/关闭”原理进行正确的OO设计的方式。
因此,这里的解决方案是:您退后一步,对OO设计进行更多阅读; 怎么做; 以及它在Java中的实际工作方式。 记录在案:您真的想远离使用静态方法 -在良好的OO设计中这是一个异常 。 仅在确实有充分理由时才使用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.