Вызов super в Dart
После @override тело родительского метода в потомке
не выполняется автоматически. Вызов реализации родителя
записывают через super и точку перед именем метода.
Сначала зададим метод в родителе:
class Post {
int age = 0;
void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
print("need age more 0");
}
}
}
В Employee добавим верхнюю границу, а проверку
«не меньше нуля» оставим родителю:
class Employee extends Post {
@override
void setAge(int age) {
if (age <= 120) {
super.setAge(age);
} else {
print("need age less 120");
}
}
}
Проверка:
var employee = Employee();
employee.setAge(30);
print(employee.age);
Дан следующий код:
class Post {
int age = 0;
void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
print("need age more 0");
}
}
}
class Employee extends Post {
@override
void setAge(int age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
print("need age more 0");
}
} else {
print("need age less 120");
}
}
}
В классе Employee исправьте
и упростите сеттер возраста, использовав
оригинальный метод родителя через
super.