【问题标题】:Alternative to overiding static in java在java中覆盖静态的替代方法
【发布时间】:2012-05-23 10:23:39
【问题描述】:

我想知道:将属性适合作为大型继承结构一部分的类的最佳方法是什么。我想创建一个抽象静态方法,每个类都会覆盖它,但是在快速谷歌之后似乎不起作用。有什么建议么?

我可以让它成为一个实例方法,但它确实是一个类级别的规范。

提前致谢。

【问题讨论】:

  • 如您所见,Java 中不存在静态多态性。总体目标是什么?
  • 你能更详细地解释一下你想用这个静态方法做什么吗?也许我们可以找到替代解决方案。
  • 更具体地说:我们正在处理一个布尔值,我需要能够专门查询每个类的对象。所以我想我回答了我自己的问题:我应该让它成为一个实例方法。
  • 只是同一个类的每个对象的值都是一样的

标签: java inheritance static abstract


【解决方案1】:

我建议你创建一个抽象方法,正如你所想的那样,并让这个方法在每个类中根据静态变量来实现。

abstract class Base {
    abstract String getValue();
}

class A extends Base {

    static String aValue = "From A";

    String getValue() {
        return aValue;
    }
}

class B extends A {

    static String bValue = "From B";

    String getValue() {
        return bValue;
    }
}

每个类都需要更多样板,而不仅仅是一个字段声明,但我相信这很难做到。

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多