У меня есть класс Person и его подкласс Student:
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Student extends Person {
private int grade;
public Student(String name, int grade) {
super(name);
this.grade = grade;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public void printDescription() {
System.out.println("Name: " + getName());
System.out.println("Grade: " + Integer.toString(grade));
}
}
Таким образом, у Person есть getter и setter для свойства name, а Student имеет только getter и setter для его нового свойства grade, если только printDescription () метод.Проблема заключается в том, как правильно вызвать свойство name в методе студента printDescription ()?
Я реализовал это, как в приведенном выше коде, учитывая, что Student наследует getter и setter от родительского класса.Но в моем университете учитель Java просит использовать его следующим образом:
public void printDescription() {
System.out.println("Name: " + super.getName());
System.out.println("Grade: " + Integer.toString(grade));
}
Поэтому он предлагает напрямую вызвать метод родительского вызова.Я думаю, что это не лучший способ, потому что в случае, если мы переопределим имя геттера в классе Student, вместо него все равно будет вызываться getter из Person.
Так какой подход лучше использовать в этой ситуации для свойства name?
UPD: важно отметить, что для этой задачи не требуется специально вызывать реализацию-получатель суперкласса, поэтому меня смутила рекомендация учителя использовать super.