将对象作为构造函数中的参数传递

lef*_*ost -1 java

我正在尝试将对象作为参数传递给构造函数.是否允许以下​​代码?特别是我进入ToyotaCorolla进入的部分Car car,然后进入String brandString model.

public class Car {
    private String brand, model;

    public Car(String brand, String model) {
        this.brand = brand;
        this.model = model;
    }

    // getters and setters
}

public class Customer {
    private String name;
    private Car car;

    public Customer(String name, Car car) {
        this.name = name;
        this.car = car;
    }

    // getters and setters
}

public class Service {
    Customer customer = new Customer("John", "Toyota", "Corolla");
}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 7

Customer没有带3个字符串的构造函数,因此您必须在以下位置传递String和Car对象:

更改

Customer customer = new Customer("John", "Toyota", "Corolla");
Run Code Online (Sandbox Code Playgroud)

Customer customer = new Customer("John", new Car("Toyota", "Corolla"));
Run Code Online (Sandbox Code Playgroud)

解决方案2是为Customer提供一个3 String构造函数,并在构造函数中创建一个Car对象.

public Customer(String name, Car car) {
    this.name = name;
    this.car = car;
}

// and
public Customer(String name, String brand, String model) {
    this.name = name;
    this.car = new Car(brand, model);
}
Run Code Online (Sandbox Code Playgroud)