我有一个抽象类和2个子类。有4个常量与所有类有关。我打算把决赛放在抽象类中,但是我知道最后一个变量不会被继承吗? 我是否需要在每个类中定义常量(似乎效率低下)?或者只是让这个常量成为一个即时变量(听起来不像一个好主意)?Java-在抽象类中使用常量,需要子类使用
我能做些什么呢?
我有一个抽象类和2个子类。有4个常量与所有类有关。我打算把决赛放在抽象类中,但是我知道最后一个变量不会被继承吗? 我是否需要在每个类中定义常量(似乎效率低下)?或者只是让这个常量成为一个即时变量(听起来不像一个好主意)?Java-在抽象类中使用常量,需要子类使用
我能做些什么呢?
如果在抽象类中定义了以下内容,那么您的所有子类都可以使用以下内容。
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
。
我还没有尝试,但我敢肯定,第二个只适用于如果子类在同一个包。 –
@AngeloNeuschitzer是的,这是正确的。 – Martin
然后你应该这样写,OP似乎是初学者,可能会感到困惑。 –