我有一个带有公共静态String xxx属性的BaseClass。BaseClass构造函数需要使用xxx属性调用某些方法。并且有一个ChildClass应该重写BaseClass xxx属性,但是如果我在ChildClass构造函数中这样做已经为时已晚。如何更改BaseClass xxx属性,以便BaseClass构造函数将使用ChildClass xxx中的值。
BaseClass {
public statis Strin xxx = "";
public void BaseClass()
{
open(xxx);
}
}
ChildClass extends Baseclass {
// Need to rewrite this value to be used by BaseClass constructor
public statis String xxx = "something else"
}
BaseClass仍使用其自己的值,而不是构造函数中ChildClass的值。希望它很简单,但我不知道该怎么做。感谢帮助。
您可能不想更改基类使用的值。
静态字段不能被覆盖。您可以使用非静态字段来执行此操作,并将静态字段保留为默认值,如下所示:
class BaseClass {
public static String DEFAULT_XXX = "";
protected final String xxx;
public BaseClass()
{
this(DEFAULT_XXX);
}
protected BaseClass(String xxx)
{
this.xxx = xxx;
open(xxx);
}
}
class ChildClass extends BaseClass {
public ChildClass()
{
super("something else");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句