[英]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.