Практика на наследование в Dart
Ниже задачи на иерархию классов,
override и приведение типов.
Сделайте класс Animal
с методом speak(),
возвращающим "...".
Сделайте классы Dog и Cat,
которые возвращают "woof"
и "meow".
Выведите оба звука.
Дан следующий код:
class Device {
Device(this.id);
String id;
String status() {
return "off";
}
}
class Phone extends Device {
Phone(super.id);
@override
String status() {
return "idle";
}
}
Создайте Phone("p1"), сохраните в переменную
типа Device. Выведите status() и id.
Сделайте класс Base с методом
tag(), возвращающим "B".
Сделайте класс Derived, переопределите
tag() так, чтобы возвращалось "D",
и добавьте метод fullTag() -
склейку результата super.tag() и tag()
без разделителя.
Выведите fullTag().
Сделайте класс Person с конструктором
name.
Сделайте класс Worker с параметрами
name и role
и вызовом конструктора предка.
Выведите имя и роль.
Дан следующий код:
class Shape {}
class Circle extends Shape {}
class Square extends Shape {}
Поместим объекты в список:
var items = [Circle(), Square(), Circle()];
Выведите, сколько элементов списка являются Circle.
Дан следующий код:
class Msg {
Msg(this.text);
String text;
}
class Alert extends Msg {
Alert(super.text, this.level);
int level;
}
void show(Msg m) {
if (m is Alert) {
print(m.level);
} else {
print(m.text);
}
}
Вызовите show для Msg("ok")
и Alert("fail", 3). Зафиксируйте вывод.
Сделайте класс Label
с полем text.
Сделайте класс BoldLabel,
переопределите геттер: строка
в верхнем регистре.
Выведите text для "note".
Сделайте класс Vehicle
с методом wheels(), возвращающим 0.
Сделайте класс Bike, наследующий
Vehicle, переопределите метод
и верните 2. Выведите число колес.
Дан следующий код:
class Employee {
Employee(this.login);
String login;
}
class Admin extends Employee {
Admin(super.login, this.scope);
String scope;
}
Создадим объект:
Employee u = Admin("root", "all");
Получите объект Admin из u
и выведите scope. Если тип другой,
выведите "none".