我想知道是否有可能覆盖一个变量的名称(而不是值)时,从它的超类扩展。
想象一下这个场景:
public class Base {
public String A;
public String doSomething() { print(A) ; }
}
public class Sub1 extends Base {
public String A1;
public void setA1(String A1) { this.A1 = A1; }
}
public class Sub2 extends Base {
public String A2;
}
Sub1 s = new Sub1();
s.setA1("1")
s.doSomething() // print "1"
我很好奇,如果我能让变量A与变量A1和A2相同,只是为了让代码在我的子类中更具可读性。
2条答案
按热度按时间shyt4zoc1#
是的,你可以在
Base
中“覆盖”字段A
。这样Sub1
和Sub2
类将拥有它们自己的A
字段名(但是它将是具有不同值的不同字段(与Base
))。或者您可以在
Sub1
和Sub2
类中重用A
字段:mccptt672#
我的天哪,这是5年后,但答案如下:
从上面可以看出,我们可以声明
A1
,而无需创建变量A1
,该变量将覆盖A
,但仍使用A
。您可以这样做,这仅仅是因为java使用封装在java中串行化和反串行化其变量