我有一个抽象类和 2 个子类。有 4 个常量与所有类相关。我打算将决赛放在抽象类中,但我知道最终变量不是继承的?我是否必须在每个类中定义常量(似乎效率低下)?或者只是让常数成为一个即时变量(听起来不是一个好主意)?
我有什么方法可以解决这个问题?
如果在抽象类中定义,以下内容将可用于您的所有子类。
public static final Integer MYCONSTANT = 42;
或者
static final Integer MYCONSTANT = 42;
或者
protected static final Integer MYCONSTANT = 42;
第二个(包私有)仅适用于同一包中的类。第三个(受保护的)将可用于所有子类,而不管它们的包。
常量由子代继承。您只需要确保拥有它们,protected
否则public
孩子们可以访问它们。
abstract class A {
protected final static String FOO = "bar";
}
class B extends A {
somemethod() {
System.out.println("foo: " + FOO);
}
}
可以从类及其所有子类访问。
是的,他们是。但是因为它们应该是恒定的,所以它应该final and static
只有static modifier
一个“副本”,如果它只用于子类,那么你可以使用protected
,或者如果来自其他类也必须制作它public
。