繁体   English   中英

如何强制子类在Java中重新定义常量?

[英]How can I force subclasses to redefine a constant in Java?

我怎么能有一个通用的抽象类,比如说Animal,让它实现一个常量(或者一个变量;它不介意)哪个必须由所有子类重新定义?

例:

abstract class Animal {
    private static int venerableAge;
}

并强迫Dog定义类似的东西

class Dog extends Animal {
    private static int venerableAge = 10;
}

我不希望不同的子类能够读取或写入彼此的值。 只是他们自己的一个。

即,每个类必须有自己的变量的静态“实例”。 没有人会访问父母的。

这可能在Java中吗?

诀窍是使用getter方法而不是直接使用字段:

abstract class Animal {
   abstract int getVenerableAge();
}

class Dog extends Animal {
   private static int venerableAge = 10;

   public int getVenerableAge() {
      return venerableAge;
   }
}

编辑:如何让构造函数执行合同绑定:

abstract class Animal {
    public Animal(int venerableAge){
       //carry out sense checks here. i.e.:
       if (venerableAge < 0) { /* doSomething */ }
    }
}

class Dog extends Animal {
   private static int venerableAge;

   public Dog(int age) {
      super(age)
      venerableAge = age;
   }
}

现在,狗和猫都被迫创造了令人尊敬的年龄,但(如上所述)不能看到彼此的价值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM