gpt4 book ai didi

java - 覆盖继承的变量名

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:48 26 4
gpt4 key购买 nike

我想知道从变量的父类(super class)扩展时是否可以覆盖变量的名称(而不是值)。

想象一下这个场景:

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 相同,只是为了使我的子类中的代码更具可读性。

最佳答案

是的,您可以“覆盖”Base 中的A 字段。这样 Sub1Sub2 类将拥有自己的 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

或者您可以在 Sub1Sub2 类中重用 A 字段:

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"

关于java - 覆盖继承的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49907480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com