gpt4 book ai didi

java - 访问扩展类中的属性/常量

转载 作者:行者123 更新时间:2023-12-01 16:44:35 29 4
gpt4 key购买 nike

我正在努力实现以下目标:

我有一个父类,有一些逻辑。在子类中,我“重新定义”常量/属性。有没有办法让子属性可以通过父类中定义的方法访问?或者更具体地说 - 有什么方法可以强制“out”方法在下面的示例中写入扩展而不是基本

public class BaseTest {
public static final String x = "base";

public void out() {
System.out.println(x);
}
}

public class ExtendedTest extends BaseTest{
public static final String x = "extended";
}

public class Main {
public static void main(String[] args) {
BaseTest base = new BaseTest();
ExtendedTest extended = new ExtendedTest();
base.out(); // base (as expected)
extended.out(); // base (extended expected)
System.out.println(extended.x); // extended (as expected)
}
}

我主要来自 PHP 世界,这种方法在其中效果很好。不知道我是否遗漏了某些内容,或者 Java 的设计本身是否不允许这样做。

谢谢。

注意:无论属性是否静态,这并不重要。我只是希望能够重写子类中任何类型的属性(就像我可以重写方法一样),根据我迄今为止收到的答案,这在 Java 中似乎是不可能的。在 PHP 中这是绝对可能的,这就是我问这个问题的原因。

最佳答案

static 字段不受继承限制。out() 方法主体中的 xBaseTest.x。由于您没有重写 out(),因此 out() 方法的主体仍会打印 BaseTest.x 的值。

关于java - 访问扩展类中的属性/常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743992/

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