簡體   English   中英

有沒有更好的方法來創建對象?

[英]Is there any better way to create an object?

我正在從Student類創建一個新對象,但是,Student類包含一個來自Address類的對象,而Address類包含一個來自PostCode類的對象。 我嘗試創建3個不同的對象,還有什么更好的方法嗎?

public class Main{


public static void main(String[] args) {

    PostCode p1 = new PostCode("Keiraville", "Wollongong", "NSW");
    Address a1 = new Address (17, "Dalas",p1 , "Australia");
    Student s1 = new Student("Huang", 314531, a1, "Csit121");

    s1.print();

班級學生

public class Student {
String name;
int studentID;
Address address;
String courseID;

public Student(String name, int studentID, Address address, String courseID)
{
    this.name = name;
    this.studentID = studentID;
    this.address = address;
    this.courseID = courseID;
}

班級地址

public class Address  {
int streetNumber;
String streetName;
PostCode postCode;
String country;

public Address(int streetNum, String name, PostCode postCode, String country)
{
    this.streetNumber = streetNum;
    this.streetName = name;
    this.postCode = postCode;
    this.country = country;
}

郵編類

public class PostCode{
String suburb;
String city;
String state;

public PostCode (String suburb, String city, String state)
{
    this.suburb = suburb;
    this.city = city;
    this.state = state;
}

我也嘗試過

Student s1 = new Student("Huang", 314531, Address(17, "Dalas", PostCode("Keiraville", "Wollongong", "NSW") , "Australia"), "Csit121");

兩者似乎都是創建新對象的完全有效的方法。 在第二個版本中,您忘記了Address和PostCode之前的new關鍵字。 否則,在有效性方面確實沒有任何區別。 您可能會發現,在第二種實現中,您可能要超過80個字符。 慣例是使行短,通常少於80個字符。

為了打印對象的值,按照您的建議實現打印功能是一個有效的選擇,但是在Java中,約定是在每個以字符串形式返回值的類中實現toString()方法。 例如,在您的PostCode類中,其外觀應類似於

public String toString() {
    return " Suburb = " + this.suburb + " City = " + this.city + " State = " this.state;
}

然后,您可以通過

PostCode postCodeObject = new PostCode("Bla", "Bla2", "Bla3");
System.out.println(postCodeObject.toString());

如果您的值不是String類型,例如,它們可以是int類型,例如Studentid,則可以說類似

return Integer.toString(studentid);

只需使用多級繼承的概念...在類的2中使用super方法nd將參數傳遞給super ...這樣,您只需使一個對象nd將所有參數傳遞給該類的構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM