Есть ли лучший способ создать объект? - PullRequest
0 голосов
/ 31 марта 2019

Я создаю новый объект из класса 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;
}

класс PostCode

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");

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Оба кажутся совершенно правильными способами создания новых объектов.Во второй версии вы забыли ключевое слово new перед Address и PostCode.В противном случае действительно нет никакой разницы с точки зрения действительности.Возможно, вы обнаружите, что во второй реализации вы можете использовать более 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);
0 голосов
/ 31 марта 2019

Просто используйте концепцию многоуровневого наследования ... используйте метод super в 2 классе и передайте параметры в super ... выполнив это, вы должны сделать только один объект и передать все параметры конструктору этого класса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...