Приведение типа в Dart
Переменная типа родителя не дает вызывать методы потомка.
Если там лежит Note, тип сужают оператором as:
class Post {
void show() {
print("post");
}
}
class Note extends Post {
@override
void show() {
print("note");
}
}
Создадим объект и вызовем метод:
Post post = Note();
(post as Note).show();
Неверное приведение останавливает программу с ошибкой.
Безопасный вариант - as?: при неудаче вернется
null:
Post post = Post();
var note = post as Note?;
print(note);
После успешной проверки is в той же ветке компилятор
сужает тип - отдельный as не нужен:
class Post {}
class Employee extends Post {
int getSalary() => 1000;
}
void printSalary(Post post) {
if (post is Employee) {
print(post.getSalary());
}
}
Переменная типа Post
должна ссылаться на объект класса
Employee.
Приведите переменную к типу
Employee с помощью as
и выведите на экран зарплату
сотрудника.