我將一個實例變量添加到類「Person」,它是一個引用類型(「Date」,我寫了一個類)。在我的Person類的構造函數中,我因此試圖使用Date類的構造函數初始化Date屬性,但我不確定如何執行此操作。以前我只能初始化原始類型(或字符串),如下所示。這是我的代碼段。我不確定如何初始化「生日」,以便它使用Date類的構造函數。謝謝!如何在Java中構造函數中初始化引用屬性?
public class Person {
/* Attribute declarations */
private String lastName; // last name
private String firstName; // first name
private String email; // email address
private Date birthday; // birth date
/**
* Constructor initializes the person's name, email address, and birthday
*/
public Person(String firstName, String lastName, String email, Date birthday) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.birthday = ????
我想這樣做,但我很困惑。以firstName變量爲例。在構造函數中,我們有「this.firstName = firstName;」,它基本上給出firstName屬性(這是早先聲明的)作爲參數輸入的值(「firstName」參數),不是嗎?所以如果我寫this.birthday = new Date();那麼爲生日輸入的參數如何傳遞給它? –
那麼'this.birthday = birthday;'就是你要找的東西。它和你的例子'this.firstName = firstName;'的工作方式相同,生日對象將'指向'與參數傳遞的對象相同的對象。不過要注意的是,就像Joni下面所說的,如果某件事改變了生日的參數,它會改變班級的生日,反之亦然。 – Dynomyte
好吧我想我明白了。我像你最初建議的那樣寫它,並根據我的默認Date參數正確創建Date對象。但是我還需要在我的Person代碼中添加另一個構造函數,這將允許我創建一個指向在新Person中傳遞的參數的「生日」。你說'this.birthday = birthday;'我知道會工作,除了'birthday'由三個參數組成:'int year,int month,int day'。那麼如何設置一個允許Person接受'int year,int month,int day'並將其賦值給'birthday'的構造函數呢? –