【问题标题】:How do you create a java object that uses a variable from another class?如何创建一个使用另一个类的变量的 java 对象?
【发布时间】:2019-07-28 00:55:23
【问题描述】:

如何创建一个使用另一个类的变量或调用整个构造函数的 java 对象?

例如accountNumber、firstName、lastName、phone都是address中传入的变量,由street、city、state、zip组成,并且已经被创建:

Address address = new Address(street, city, state, zip);

数据仅由兆字节组成,并且已经创建:

Data data = new Data(megabytes);

这是我为客户对象所拥有的:

Customer customer = new Customer(accountNumber, firstName, lastName, address, phone, data);

这应该是一个“重载的构造函数”,但我不明白这是什么意思。

这是我目前的构造函数:

public Customer(String accountNumber, String firstName, String lastName, Address address, int phone, Data megabytes)
{
    this.accountNumber = accountNumber;
    this.firstName = firstName; 
    this.lastName = lastName;
    this.address = address; 
    this.phone = phone; 
    this.megabytes= megabytes; 
}

我得到错误:

The constructor Customer(String, String, String, Address, int, Data) is undefined

【问题讨论】:

  • 发布的代码看起来不错;重新编译您的应用程序 - 如果问题仍然存在,请将您的问题编辑为我们可以重现的内容。
  • 我能看到的唯一问题是拼写错误:“megabites” :-)

标签: java class object constructor


【解决方案1】:

乍一看,一切似乎都很好。我希望你在编译之前保存了文件。

既然你提到你不明白什么是重载构造函数,我会尽力解释一下。

重载的构造函数具有相同的构造函数名称,但它与其他构造函数的不同之处在于以下方面 -

  1. 它有不同数量的形式参数
  2. 构造函数的形参类型顺序不同

这是一个例子 -

public class Customer {
    private String firstName;
    private String lastName;
    private int phoneNumber;

    public Customer() {
        // default constructor
    }

    public Customer(String firstName) {
        this.firstName = firstName;
    }

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public Customer(String firstName, String lastName, int phoneNumber) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.phoneNumber = phoneNumber;
    }

    public Customer(int phoneNumber, String firstName, String lastName) {
        this.phoneNumber = phoneNumber;  
        this.firstName = firstName;
        this.lastName = lastName;
    }

// This is not an overloaded constructor as there is already a constructor of type
// Customer(String, String)

//    public Customer(String lastName, String firstName) {
//        this.lastName = lastName;
//        this.firstName = firstName;
//    }

}

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2011-08-19
    • 1970-01-01
    相关资源
    最近更新 更多