【问题标题】:Can't reference two classes inside one?不能在一个类中引用两个类?
【发布时间】:2016-11-16 19:50:56
【问题描述】:

我第一次在 Java 中使用面向对象编程,直到现在还没有遇到任何问题。

我有一个客户类(省略不相关的细节):

public class Customer {

  public String bikesOwned;

  public Customer() //Default Constructor
  {
    bikesOwned = "";
  }

  public Customer(String aBike) //Parameterized Constructor
  {
    addBike(aBike);  
  }


  public void addBike (String aBike) //Mutator Method for Bikes Owned
  {
      bikesOwned = aBike;
  }


  public String toString()
  {
    String returnBikes = bikesOwned.toString();
    return returnBikes;
  }
}

我有一个 Bike Tester 类,它使用我的 Bicycle 类中的信息:

public class bikeTester {
  public static void main (String [] args)
  { 
        Bicycle hisBike = new Bicycle(Bicycle.BikeType.Hybrid Bicycle.UserType.Men, 
            Bicycle.FrameMaterial.Carbon, Bicycle.BrakeType.Caliper, 
            Bicycle.Condition.Used, 29, 18, 10, "REI", "Black");

 Customer don = new Customer();
        don.setFirstName("Don");
        don.setLastName("Norman");
        don.setPhoneNumber("804 123-4567");
        don.setEmailAddress("dnorman@aol.com");
        don.addBike(hisBike);
        System.out.println(don);
        System.out.println();
}

我的问题是,当我编译时,我得到了这个错误:
“客户中的 addBike(java.lang.String) 不能应用于(自行车)”。

我不明白为什么除了addBike 之外的其他一切都正常工作。有任何想法吗?非常感谢任何输入。

【问题讨论】:

  • addBike(java.lang.String)Bicycle 不是 String
  • 不相关,但如果您想拥有多个,bikesOwned 应该是 List<Bike>,这是由“自行车s拥有”所暗示的

标签: java class object methods


【解决方案1】:

您的 addBike 方法需要一个 String 参数:

public void addBike (String aBike)

但是你给它发送了一个Bicycle 参数:

don.addBike(hisBike);

要么向方法发送String,要么将方法更改为接受Bicycle(或添加另一个接受Bicycle 的同名方法)。

我不太清楚如何StringBicycle 之间进行转换,特别是考虑到该方法本身只是设置一个名为bikesOwned 的值,它本身就是一个String 出于某种原因。也许bikesOwned 应该是某种列表或集合,而您想要添加 项到该集合?

您最终希望此代码执行的逻辑取决于您。但是错误本身非常简单。 StringBicycle 是两个不同的东西。

【讨论】:

    【解决方案2】:

    addBike 方法接收 String 参数,但您正在向函数发送 Bicycle 类型。这基本上是类型不匹配。

    尝试向函数发送String值。

    或者,将addBike方法中的参数改为Bicycle类型。

    【讨论】:

      【解决方案3】:

      您正在尝试从

      传递“自行车”实例
      don.addBike(hisBike);
      

      进入方法:

      public void addBike (String aBike)
      

      接受一个字符串参数。

      要么更改您的方法以接受 Bicycle 实例(并可能将其添加到一些自有自行车的数组中),或者如果您只想传递自行车的名称,请相应地更改调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多