gpt4 book ai didi

java - 两个不同子类的数组

转载 作者:行者123 更新时间:2023-12-01 09:17:48 25 4
gpt4 key购买 nike

我有一个父类(super class)的两个子类

public class A {
}

public class B extends A{
int weight;
}

public class C extends A{
int height;
}

现在,我需要一个名为 myArray 的数组,其中一些单元格来自 B 类,其他单元格来自 C 类。

A[10] myArray;

myArray[2]=new B();
myArray[3]=new C();

myArray[2].weight=40;
myArray[3].height=60;

这怎么可能?我走的路正确吗?

最佳答案

可以将从 A 继承的所有对象放入同一个数组中,但要使用对象特定字段,您必须在放入数组之前解析转换或设置字段。我更喜欢后者

A myArray[10];

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

b.weight=40;
c.height=60;

myArray[2] = b;
myArray[3] = c;

您可以轻松地将此方法推广到适用于许多 BC 对象。因此,您可以拥有一个由变量 bc 组成的数组,而不是只有变量 bc。然后,当您完成设置它们的值后,您可以将它们全部放入 A 数组中。

为了完整起见,这里是类型转换方法(注意有多难看)

A myArray[10];

myArray[2] = new B();
myArray[3] = new C();

((B)myArray[2]).weight=40;
((C)myArray[3]).height=60;

另请注意,如果在运行时将其转换为错误的类型,则会出现令人讨厌的 ClassCastException 异常

关于java - 两个不同子类的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40411185/

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