当前位置: 首页 > 知识库问答 >
问题:

不能访问数组中的对象

陆伟
2023-03-14
else if (control.equals("Car") == true)
{
     owner = (scanner.nextLine());                     
     address = (scanner.nextLine());
     phone = (scanner.nextLine());
     email =(scanner.nextLine());
     convertible= (scanner.nextBoolean());
     color = (scanner.nextLine());

     vehicleLot[i] = new car(owner, address, phone, email, convertible, color);
     System.out.println(vehicleLot[i].getOwner());
     System.out.println(vehicleLot[i].getAddress());
     //System.out.println(vehicleLot[i].getColor());
}

上面的代码在我的主方法中。被注释掉的行抛出错误“无法在类车辆中找到符号”。我正在从一个文件中读取并将信息放置到正确的对象数据字段中。数组是车辆数组。根据我的理解,车辆数组的一个元素可以是车辆或车辆的任何子类。Getters和setters方法可用于每个相应的类和子类,使用父类的Getters和setters。汽车是车辆的一个子类。当我刚刚创建car对象时,为什么不在尝试vehicle之前先尝试访问cars方法?问题出在我的汽车构造器上吗?car是静态的,因为它是一个嵌套类,如果不保持它是静态的,就会抛出错误。下面是汽车课的总结。

static class Car extends vehicle
{
  private boolean convertible;
  private String color;
  public Car()
  {

  }
  public Car(String ownersName, String address, String phone, String email, boolean convertible, String color)
  {
      super.setOwner(ownersName) ;
      super.setAddress(address);
      super.setPhone(phone);
      super.setEmail(email);
      this.convertible = convertible;
      this.color = color;
      System.out.println(this.convertible);
  }//Car class ends

system.out.println打印出该字符串的正确值,所以我很感兴趣的是为什么对象想尝试只使用类vehicle而不是类car和类vehicle的方法。如果有帮助,这里是车辆。

public static class Vehicle
{
    private String ownersName;
    private String address; 
    private String phone;
    private String email;

    public Vehicle()
    {
    }
    public Vehicle(String ownersName, String address, String phone, String email)
    {
        this.ownersName = ownersName;
        this.address = address;
        this.phone = phone;
        this.email = email;
     }
}//Vehicle class ends

共有1个答案

昌乐生
2023-03-14

如果我理解这个问题,那么您会问为什么下面的行不能编译

System.out.println(vehicleLot[i].getColor());

vehicleLot定义为vehice的数组。它可以包含vehicle的任何子类的实例。因此,vehicleLot[i]不一定有getcolor()方法,因为这是car的方法。

为了访问Car的方法,必须将Vehicle引用强制转换为Car:

System.out.println(((Car)vehicleLot[i]).getColor());
 类似资料:
  • 尝试使用所有独特的硬币进行选择过滤器,但无法正确到达其末尾。 在循环浏览数据时,我可以得到所有硬币的列表。 我还想使用Set方法和spread操作符来获得唯一的值,但我不知道如何组合所有这些。

  • 问题内容: 我有以下JSON对象: 这是来自一个请求,我有成功。 问题是,即使dataJS在控制台中正确显示,我也无法访问JSON对象中的项目。有想法吗? 问题答案: 那是因为您的基础对象也是数组。 我怀疑那会有用

  • 可能的重复: 我有一个嵌套的数据结构/JSON,我如何访问一个特定的值? 我有一个在JSON数组中返回嵌套对象的服务。我如何在对象中循环并打印所需的数据? 这是我的结果: 这是我要为每个项目(项目1,项目2,项目3,...)打印的内容: 到目前为止我试过: 这只返回“item1”、“item2”等,但我不知道如何访问sourceUuid等

  • 问题内容: 我有以下数组,当我做得到: 我试图按如下方式访问数组: 但这显示了我: 未定义0 注意: 我从 Facebook SDK 4 获得此数组,所以我不知道原始的数组结构。 作为示例,如何访问数组中的值? 问题答案: 要访问或您如何使用两个不同的运算符。 数组 要访问数组元素,您必须使用,或者您不会看到太多,但也可以使用is 。 声明数组和访问数组元素之间的区别 定义数组和访问数组元素是两件

  • 我的程序有一个对象类。Person对象由一个String(这是一个人的名字)和一个6元素字符串数组组成。数组保存用户输入的值,以对6种不同的运动进行排名,从最优选到最不优选。 例如,名为的Person对象可以由一个设置为的字符串和一个数组组成,每个元素如下。(列出的第二项运动是鲍勃最喜欢的运动,最后一项是他最不喜欢的运动)。 可以使用以下代码创建该示例对象: 这里是Person类: 每次新用户输入

  • 我试图从一个Json文件中提取一个对象列表,但是该文件以一个对象开始,该对象包含我需要的对象数组。我是一个新的改造这里是我的文件:接口 控制器 Json的开头 我的对象Pojo 所以我不需要jsonObject中的任何初始信息,我所需要的只是元素jsonArray中的对象列表,它由两个稍微不同的对象组成,一个有nodes[],一个没有。因此POJO中有2个构造函数? 我如何设置改装来处理这件事?与