Вызов super в Java
После переопределения тело родительского метода в потомке
не выполняется автоматически. Вызов реализации родителя
записывают через super и точку перед именем метода.
Сначала зададим метод в родителе:
class Post {
protected int age = 0;
public void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("need age more 0");
}
}
public int getAge() {
return this.age;
}
}
В Article добавим верхнюю границу, а проверку
«не меньше нуля» оставим родителю:
class Article extends Post {
@Override
public void setAge(int age) {
if (age <= 120) {
super.setAge(age);
} else {
System.out.println("need age less 120");
}
}
}
Проверка:
Article article = new Article();
article.setAge(30);
System.out.println(article.getAge());
Дан код:
class User {
protected int age = 0;
public void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("need age more 0");
}
}
}
class Employee extends User {
@Override
public void setAge(int age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("need age more 0");
}
} else {
System.out.println("need age less 120");
}
}
}
В классе Employee исправьте
и упростите сеттер возраста, использовав
оригинальный метод родителя через
super.