假设我有课
class A {
public static final int x = 1;
}
我有一个派生类
class B extends A {
x = 2; // want to redefine x as 2 here
}
我将如何在派生类 B 中将常量重新定义为 2?我记得在使用 C++ 时有一个构造函数“技巧”,但我不知道在 Java 中该怎么做。我什至尝试从 A 类的变量声明中删除“final”,但 B 类甚至不知道 X 已定义。它说我需要在 B 类中的 x 前面添加“public static final int”,但我认为它已经在 A 中定义了。
最佳答案
你不能。静态属于类而不是实例。
但是为了实现一个技巧,您可以创建另一个同名的常量。 您可以使用
访问该常量A.x 或 B.x
class B extends A {
public static final x = 2;
}
在此示例中 A.x=1
和 B.x=2
或者,如果您想按照您的要求重新定义,您可以这样做,但这毫无意义
class B extends A{
static{
x=2;// assuming 'x' not final
}
}
在此示例中 A.x=2
和 B.x=2
关于java - 如何在派生类中重新定义常量变量? [JAVA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107056/