gpt4 book ai didi

java - 如果我创建一个抽象对象数组,我可以将不同类型的子对象放入同一个数组中吗?

转载 作者:行者123 更新时间:2023-12-02 06:13:49 24 4
gpt4 key购买 nike

例如:

abstract class Shape { 
public abstract void move();
}

class Circle extends Shape { ... }
class Square extends Shape { ... }

...

Shape[] shapes = new Shape[10];
shapes[0] = new Circle();
shapes[1] = new Square();

...

for (Shape i: shapes)
i.move();

等等

我尝试这样做,理论上似乎没问题,但当我尝试运行它时,我不断收到未知错误(“线程“main”java.lang.Error中的异常: Unresolved 编译问题”)。另外,在运行它之前,它会给我这些奇怪的错误警告:“{预期在此 token 之后。”我仔细检查了一下,我所有的括号都很好。我应该只使用接口(interface)还是其他东西?

编辑:我修复了它,但它对我来说仍然毫无意义。错误所在行:

Shape[] shapes = new Shape[2];
shapes[0] = new Circle();
shapes[1] = new Square();

我把它改成这样:

Shape[] shapes = new Shape[2];
{
shapes[0] = new Circle();
shapes[1] = new Square();
}

突然间它就起作用了。什么?

编辑2:别介意我。我在方法之外初始化了数组。

最佳答案

Eclipse 有一个“功能”,您可以运行无法编译的代码。我强烈建议您不要使用它,因为它只会延迟发现错误(这会最大化修复它们的成本)

当您关闭此功能时,您会发现该行代码未编译,并且可能与子类的使用没有任何关系。

简而言之,你可以这样做,错误可能是无关的。

关于java - 如果我创建一个抽象对象数组,我可以将不同类型的子对象放入同一个数组中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657307/

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