我怎么能有一个通用的抽象类,比如说Animal,让它实现一个常量(或者一个变量;它不介意)哪个必须由所有子类重新定义?
例:
abstract class Animal {
private static int venerableAge;
}
Run Code Online (Sandbox Code Playgroud)
并强制Dog
定义类似的东西
class Dog extends Animal {
private static int venerableAge = 10;
}
Run Code Online (Sandbox Code Playgroud)
我不希望不同的子类能够读取或写入彼此的值.只是他们自己的一个.
即,每个类必须有自己的变量的静态"实例".没有人会访问父母的.
这可能在Java中吗?
诀窍是使用getter方法而不是直接使用字段:
abstract class Animal {
abstract int getVenerableAge();
}
class Dog extends Animal {
private static int venerableAge = 10;
public int getVenerableAge() {
return venerableAge;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:如何让构造函数执行合同绑定:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,狗和猫都被迫创造了令人尊敬的年龄,但(如上所述)不能看到彼此的价值.