我如何在超类方法中使用子类的静态字段

尼提·桑蒂库(Niti Santikul)

我的超类上有一个代码,希望子类的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设计中这是一个异常仅在确实有充分理由这样做时才应使用!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在超类方法中使用子类参数?

来自分类Dev

如何在父类具有相同const字段的继承方法中使用子类的const字段?

来自分类Dev

如何在父类具有相同const字段的继承方法中使用子类的const字段?

来自分类常见问题

我可以使用超类的类工厂静态方法创建子类实例吗?

来自分类Dev

Java:如何使用超类的静态方法从其创建子类的实例

来自分类Dev

如何在不同的类中使用子类特定的方法?

来自分类Dev

我可以在超类中使用子类的名称吗?

来自分类Dev

如何在Android项目中使用java反射获取超类中的子类列表

来自分类Dev

Java:在子类中使用父类的静态方法

来自分类Dev

如何在Java中从超类调用子类方法?

来自分类Dev

您如何在Java中从超类调用子类方法?

来自分类Dev

我如何在php多线程中使用静态方法

来自分类Dev

如何在静态类中使用 getFragmentManager()

来自分类Dev

如何在不使用 setter 的情况下从子类访问超类中的私有字段?

来自分类Dev

如何使用抽象超类中子类的方法

来自分类Dev

如何使用最终方法PHP防止子类重写超类

来自分类Dev

如何在超类的静态函数中获取调用子类的名称?

来自分类Dev

如何在python中使用子类的方法调用第二个父类的方法?

来自分类Dev

如何使超类方法返回子类的实例

来自分类Dev

如何在scala中访问子类实例中的超类字段?

来自分类Dev

超类和子类——方法使用

来自分类Dev

在超类的子类中使用时,在调用函数中使用“ this”

来自分类Dev

如何在Kotlin中使用返回带有类型参数的子类型的方法创建类?

来自分类Dev

如何在C#中使用子类的实例访问父类的方法

来自分类Dev

为什么我不能在子类中使用超类的属性(Objective-C)

来自分类Dev

如何在基类中使用子类的函数属性?

来自分类Dev

在超类ArrayList中使用统一名称调用子类方法

来自分类Dev

何时在子类中使用超类方法而不进行覆盖?可能吗?

来自分类Dev

JAVA:在子类中使用超类的 getter 和 setter 的正确方法

Related 相关文章

  1. 1

    如何在超类方法中使用子类参数?

  2. 2

    如何在父类具有相同const字段的继承方法中使用子类的const字段?

  3. 3

    如何在父类具有相同const字段的继承方法中使用子类的const字段?

  4. 4

    我可以使用超类的类工厂静态方法创建子类实例吗?

  5. 5

    Java:如何使用超类的静态方法从其创建子类的实例

  6. 6

    如何在不同的类中使用子类特定的方法?

  7. 7

    我可以在超类中使用子类的名称吗?

  8. 8

    如何在Android项目中使用java反射获取超类中的子类列表

  9. 9

    Java:在子类中使用父类的静态方法

  10. 10

    如何在Java中从超类调用子类方法?

  11. 11

    您如何在Java中从超类调用子类方法?

  12. 12

    我如何在php多线程中使用静态方法

  13. 13

    如何在静态类中使用 getFragmentManager()

  14. 14

    如何在不使用 setter 的情况下从子类访问超类中的私有字段?

  15. 15

    如何使用抽象超类中子类的方法

  16. 16

    如何使用最终方法PHP防止子类重写超类

  17. 17

    如何在超类的静态函数中获取调用子类的名称?

  18. 18

    如何在python中使用子类的方法调用第二个父类的方法?

  19. 19

    如何使超类方法返回子类的实例

  20. 20

    如何在scala中访问子类实例中的超类字段?

  21. 21

    超类和子类——方法使用

  22. 22

    在超类的子类中使用时,在调用函数中使用“ this”

  23. 23

    如何在Kotlin中使用返回带有类型参数的子类型的方法创建类?

  24. 24

    如何在C#中使用子类的实例访问父类的方法

  25. 25

    为什么我不能在子类中使用超类的属性(Objective-C)

  26. 26

    如何在基类中使用子类的函数属性?

  27. 27

    在超类ArrayList中使用统一名称调用子类方法

  28. 28

    何时在子类中使用超类方法而不进行覆盖?可能吗?

  29. 29

    JAVA:在子类中使用超类的 getter 和 setter 的正确方法

热门标签

归档