2017-01-17 2 views
0

Im обучения ООП в Java, и мне интересно, как создать геттер, который получает доступ к данным из отдельного класса? У меня есть программа, которая создает людей с их именами и датами рождения. Поэтому у меня есть 3 класса, PersonProgram (основной), People и Date. Класс People имеет конструктор для Полных имен, которые включают имя, фамилию и дату рождения. Класс Date имеет конструктор и сеттеры для даты, которая включает в себя 3 целых числа для дня, месяца и года, а затем метод, который форматирует их в строковый формат. Поэтому в моей основной программе у меня есть возможность распечатать информацию о том, что создано Person. Поэтому я называю сорбент людей сСоздание получателя, который обращается к другому классу в JAVA

Person[selection].getBirthDate; 

и сорбент в моем классе людей:

public Date getBirthDate() { 
    return birthDate; 
} 

но я хочу, чтобы получить отформатированный дату из метода ToString в моем классе Date. Могу ли я просто вызвать метод toString из getBirthDate getter?

+0

Пока вы возвращаете метод 'String'. –

+0

'public String getBirthDate() {return birthDate.toString(); } ' – 4castle

+0

В объектно-ориентированных терминах использование другого объекта для возврата значения называется делегированием. Это вполне приемлемо, если не поощряться. – 4castle

ответ

0

Да, было бы целесообразно использовать toString() здесь. In Дата класс:

@Override 
public String toString(){ 
    return year + "/" + month + "/" + day; 
} 

И в классе Люди возвращают String вместо объекта Date. Таким образом, у вас есть чистый интерфейс метода, так как вы хотите, чтобы дата была прочитана как целая строка в любом случае:

public String getBirthDate() { 
    return birthDate.toString(); 
} 
+0

Возможно, у меня где-то отсутствует инициализация? У меня есть код так же, как у вас, но когда я запускаю программу, дата возвращает какое-то шестнадцатеричное значение, например: Date @ 55f96302 и в основном: System.out.println («Дата рождения:» + люди [ выбор] .getBirthDate()); –

+0

Вы возвращаете объект Date или вы не переопределили метод toString() класса Date должным образом. Стандартное строковое представление объекта - это имя класса + «@» + адрес памяти. Это то, что вы получаете там. Вы должны заставить метод getBirthDate() возвращать String (как в моем коде) И реализовать метод toString(), который я дал вам в классе Date. Конечно, вам придется менять переменные «день», «месяц» и т. Д. На все, что вы им назвали. Надеюсь это поможет! – mumpitz

0

Вы можете вызвать из главного метода:

person[index].getBirthDate().toString(); 

Это возвращает строку, которую вы хотите, так как метод ToString будет вызван на экземпляр класса Дата embeeded в случае человека.

Смежные вопросы