Похоже, здесь есть несколько заблуждений:
Когда вы создаете Student
, не существует отдельного объекта Person
- есть просто Student
, который имеет все свойстваPerson
.
Конструктор - это то, что создает Студента, поэтому внутри конструктора нет другого Студента / Человека, на поля которого вы могли бы ссылаться.Как только вы вызываете super
, вы инициализируете часть Person
объекта, и поля из Person
становятся доступными, но, поскольку это новый объект, они не могут быть установлены на что-либо, если вы не сделаете это вконструктор.
Возможны следующие варианты:
1) использовать значения по умолчанию, установленные в Person
:
public Student() {
super(); // this line can be omitted as it's done by default
}
2) Принимать значения в качестве параметров ипередать их конструктору Person
:
public Student(String newName, Date newBirthdate) {
super(newName, newBirthdate);
}
3) Указать новые значения по умолчанию:
public Student() {
super("Bob", new Date("January", 1, 1990));
}