繁体   English   中英

制作对象数组的问题

[英]Troubles with making an array of objects

我被要求通过使用数组在一个班级中制作一组拖拉机,当我尝试创建一个对象数组时,我不断收到错误消息。

这是正确的方法吗?我的其余代码在其他类中是错误的,还是我没有使用正确的方法来创建对象数组?

package testTractor;
class TestFleet {

  public static void main(String[] args) { 

      Tractor tractor = new Tractor();
      Loader loader = new Loader();
      Harvester harvester = new Harvester();

      Tractor[] fleet = new Tractor[3];

      fleet[0] = new tractor();

      fleet[1] = new loader();

      fleet[2] = new harvester();


}

  }
  1. 当你定义数组时,你给它一个类型:

    Tractor[] fleet = new Tractor[3];

    您将拥有Tractor类型的 3 个元素的数组。 这就是当您尝试添加Loader类型的元素时收到错误的原因。 您可以只添加一种类型(第 3 点)。

  2. 当您尝试添加元素时:

    fleet[0] = new tractor();

    这是错误的 - 大小写 - 这样你就引用了一个变量,而不是类。 你不能从变量中实例化(至少不会像这样)。 如果您更改外壳,您将参考class Tractor

    fleet[0] = new Tractor();

  3. 基本的 OOP - 为了让所有这些都像我想的那样工作,添加一个类Vehicle 每个扩展 Vehicle 的类都将是一个 Vehicle,因此可以安全地添加到您的数组中:

    class Vehicle{}

    并将其扩展到所有其他类:

    public class Tractor extends Vehicle { ... }

通过这种方式,您可以添加更多“车辆”,例如“汽车”、“卡车”或其他任何东西……

到底:

Vehicle[] fleet = new Vehicle[3];
fleet[0] = new Tractor();
fleet[1] = new Loader();
fleet[2] = new Harvester();

尝试:

Tractor[] fleet = new Tractor[3];
fleet[0] = tractor;
fleet[1] = loader;
fleet[2] = harvester;

PS 编辑(如果 Loader 和 Harvester 不扩展 Tractor,则使用 Object[])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM