虽然我知道我们不能在Java中覆盖变量,但也许有办法以不同的方式做同样的事情。
所以我有一个Base
课,有一些东西
class Base
{
// some stuff here;
}
我有另一个扩展Base
类的类,并添加了一些额外的东西
class New1 extends Base
{
//lots and lots of stuff here
String[] str = {"a", "b", "c"};
//lots and lots of stuff here
}
现在我需要一个使用修改后的String[] str
作为
String[] str = {"l", "m", "n"};
我无法负担编写从基类扩展并使用修改后的字符串重写所有内容类New1
的新类,该类必须来自类new1并使用新的覆盖字符串。
答案 0 :(得分:0)
如果str
受到保护(或包私有且您的新子类与new1
位于同一个包中),您可以执行以下操作:
class c extends new1
{
public c ()
{
super();
str = {"l", "m", "n"};
}
}
或者,您可以将{"l", "m", "n"}
传递给new1
的构造函数,这将覆盖str
的值。
class c extends new1
{
public c ()
{
super({"l", "m", "n"});
}
}
你不会覆盖变量,只是改变它的值。