Fra*_*aly 20 java inheritance overriding constants
我有两个扩展相同抽象类的类.它们都需要相同的常数,但具有不同的值.我怎样才能做到这一点?一些示例代码显示了我想要做的事情.
abstract class A {
public static int CONST;
}
public class B extends A {
public static int CONST = 1;
}
public class C extends A {
public static int CONST = 2;
}
public static void main(String[] args){
A a = new B();
System.out.println(a.CONST); // should print 1
}
Run Code Online (Sandbox Code Playgroud)
上面的代码没有编译,因为CONST没有在类A中初始化.我怎样才能使它工作?对于B的所有实例,CONST的值应为1,对于所有C的实例,CONST的值应为2,对于所有A的实例,CONST的值应为1或2.对于此,是否有任何方法可以使用静态?
Oli*_*rth 23
你不能这样做.
但是,你可以这样做:
abstract class A {
public abstract int getConst();
}
public class B extends A {
@Override
public int getConst() { return 1; }
}
public class C extends A {
@Override
public int getConst() { return 2; }
}
public static void main(String[] args){
A a = new B();
System.out.println(a.getConst());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13741 次 |
| 最近记录: |