我想知道从超类中扩展时是否可以覆盖变量的NAME(而不是值)。
想象一下这种情况:
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相同,只是为了让我的子类中的代码更加可读。
提前致谢
答案 0 :(得分:0)
是的,您可以“覆盖”A
中的字段Base
。这种方式Sub1
和Sub2
类将拥有A
字段名称(但它将是不同的字段,具有不同的(来自Base
)值。)
public class Base {
public String A;
public String doSomething() { print(A) ; }
}
public class Sub1 extends Base {
public String A;
public void setA(String A) { this.A = A; }
}
public class Sub2 extends Base {
public String A;
}
Sub1 s = new Sub1();
s.setA("1")
s.doSomething() // print "null", because original field has not been changed
或者您可以在A
和Sub1
类中重复使用Sub2
字段:
public class Base {
public String A;
public String doSomething() { print(A) ; }
}
public class Sub1 extends Base {
// removed: public String A1;
public void setA(String A) { this.A = A; }
}
public class Sub2 extends Base {
// removed: public String A2;
}
Sub1 s = new Sub1();
s.setA("1")
s.doSomething() // print "1"