Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 制作对象数组的麻烦_Java_Arrays_Object - Fatal编程技术网

Java 制作对象数组的麻烦

Java 制作对象数组的麻烦,java,arrays,object,Java,Arrays,Object,我被要求通过使用数组在一个类中创建一组拖拉机,当我试图创建一个对象数组时,我总是会出错 这是正确的方法吗?我的其余代码在其他类中出错了,还是我没有使用正确的方法生成对象数组 package testTractor; class TestFleet { public static void main(String[] args) { Tractor tractor = new Tractor(); Loader loader = new Loader();

我被要求通过使用数组在一个类中创建一组拖拉机,当我试图创建一个对象数组时,我总是会出错

这是正确的方法吗?我的其余代码在其他类中出错了,还是我没有使用正确的方法生成对象数组

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();


}

  }
尝试:

Tractor[] fleet = new Tractor[3];
fleet[0] = tractor;
fleet[1] = loader;
fleet[2] = harvester;
p.S.已编辑(如果装载机和收割机未伸出拖拉机,则使用对象[])

  • 定义数组时,为其指定一个类型:

    Tractor[]车队=新拖拉机[3]

    您将拥有一个包含3个元素的数组,类型为
    Tractor
    。这就是为什么在尝试添加类型为
    Loader
    的元素时会收到错误。您可以只添加一种类型(第3点)

  • 尝试添加元素时:

    fleet[0]=新拖拉机()

    这是错误的-套管-这样你指的是变量,而不是类。不能从变量实例化(至少不能这样)。如果更换机壳,请参考拖拉机的
    等级

    fleet[0]=新拖拉机()

  • 基本面向对象编程-为了让所有这些都像我想你想要的那样工作,添加一个类
    Vehicle
    。扩展车辆的每个类都将是车辆,因此可以安全地添加到您的阵列中:

    class车辆{}

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

    公共级拖拉机扩展车辆{…}

  • 通过这种方式,你可以添加更多的“车辆”,如“汽车”、“卡车”或其他什么

    最后:

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

    你会犯哪些错误?此外,类的名称有一个大写的首字母(正如它们应该的那样),但您使用小写的首字母调用构造函数:
    new tractor(),不需要调用new x()它给我的错误类型是,它根本找不到任何其他变量,即使在同一个包中的其他类中都有。装载机/收割机都继承自拖拉机类try do
    fleet[0]=拖拉机
    Ok,legit。但接下来呢。。。您的对象数组可以做什么?更好的解决方案是使用扩展类或实现接口。@Bakudan Sure。。。我可能会为拖拉机、装载机和收割机组制作一个Biggies界面。但在发布的代码中,不清楚Loader是否扩展了拖拉机-拖拉机肯定不是一个接口)。是的,但我打赌你可以做得更多/更好:)我可以建议更复杂;p-实现接口的抽象类车辆。这样,您将保证所有的通用操作,即使您对类的用户很慷慨,您也可以添加一个基本实现。