gpt4 book ai didi

java - 如何更改子类的属性值

转载 作者:行者123 更新时间:2023-12-02 10:02:57 25 4
gpt4 key购买 nike

这是一个一般性问题。我找不到正确的答案,可能是因为我不知道在浏览器中写什么才能获得好的结果:

如果我有一个A类

    public abstract class Base {
String prop1;
int prop2;
}

我想创建两个扩展 A 的子类 B 和 C:

    public class B extends A {
String prop3;
}

public class C extends A {
String prop4;
}

主类

    A b = new B();
A c = new C();

我的问题。如何修改prop3和prop4属性的值?

当我编写 b. 时,智能感知仅显示用于自动补全的 prop1 和 prop2,并且我无法编写例如 b.prop3,因为我收到错误。我尝试使用像 (B)b 这样的类型转换。我得到了相同的结果。

最佳答案

because I get an error. I try using a cast like (B)b. and I get the same result.

它有助于读取错误。您收到类转换错误吗?属性不可见错误?以及由于拼写错误而导致的不相关错误?

阅读错误会准确地告诉您。

现在您已将“a”和“b”声明为“A”类。为了访问类“B”和“C”的属性,您必须将变量强制转换为“B”和“C”,或者将它们声明为“B”和“C”。

此外,您没有声明 getter/setter,并且变量默认是包私有(private)的。这意味着您无法从类外部访问变量。

假设 B 确实有“prop3”的 getter,您可以使用:

((B) b).getProp3();

为了避免类强制转换警告,您可以这样做:

if (b instanceof B)
{
((B) b).getProp3();
}

但是,每当您需要执行上述操作时,您都应该重新考虑您的设计。尽可能避免它

关于java - 如何更改子类的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55498240/

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