как передать параметры подкласса в частные переменные суперкласса?
Я запутался в том, как получить параметры из новых экземпляров объекта, чтобы также перетекать в супер класс для обновления частных полей в супер классе.
Итак, я нахожусь в продвинутом классе Java, и у меня есть домашнее задание, которое требует суперкласса "Person" и подкласса "Student", расширяющего Person.
Класс Person хранит имя учащегося, но именно конструктор класса Student принимает имя учащегося.
Предположим, что нет метода лично, чтобы сделать переменный метод обновление...как subClassVar = setSuperClassVar ();
Пример:
public class Person
{
private String name; //holds the name of the person
private boolean mood; //holds the mood happy or sad for the person
private int dollars; //holds their bank account balance
}
class Student extends Person //I also have a tutor class that will extend Person as well
{
private String degreeMajor //holds the var for the student's major they have for their degree
Public Student(String startName, int startDollars, boolean startMood, String major)
{
degreeMajor = major; // easily passed to the Student class
name = startName; //can't pass cause private in super class?
mood = startMood; //can't pass cause private in super class?
dollars = startDollars; // see above comments
// or I can try to pass vars as below as alternate solution...
setName() = startName; // setName() would be a setter method in the superclass to...
// ...update the name var in the Person Superclass. Possible?
setMood() = startMood; // as above
// These methods do not yet exist and I am only semi confident on their "exact"...
// ...coding to make them work but I think I could manage.
}
}
Инструкции для домашнего задания были немного расплывчатыми с точки зрения того, сколько изменений в суперкласс личности мне разрешено сделать, поэтому, если вы все верите, что хорошее твердое решение, принятое в отрасли, включает в себя изменение суперкласса, я сделаю это.
Некоторые возможные примеры, которые я вижу, заключаются в том, чтобы сделать частные vars в классе Person "защищенными" или добавить setMethods() в класс person, а затем вызвать их в sub класс.
Я также открыт для обучения общей концепции о том, как передать параметры контструктора подкласса в суперкласс...и если возможно, сделайте это правильно в конструкторской части кода.
Наконец, я искал вокруг, но большинство подобных вопросов были действительно специфическим и сложным кодом....Я не мог найти ничего прямолинейного, как мой пример выше...кроме того, по какой-то причине сообщение на форуме не сгруппировало весь мой код вместе, так что извините за запутанное чтение выше.
Спасибо всем.
1 ответ:
Во-первых, вам нужно определить конструктор для
Person
:public Person(String startName, int startDollars, boolean startMood) { name = startName; dollars = startDollars; mood = startMood; }
Затем вы можете передать данные из конструктора
Student
, используяsuper(...)
:Кроме того, вы можете определить сеттеры в классеpublic Student(String startName, int startDollars, boolean startMood, String major) { super(startName, startDollars, startMood); . . . }
Person
и вызвать их из конструктораStudent
.public class Person { private String name; //holds the name of the person private boolean mood; //holds the mood happy or sad for the person private int dollars; //holds their bank account balance public void setName(String name) { this.name = name; } // etc. }