F
Flutter Friendly
@flutterfriendly1.0K подп.
726просмотров
71.2%от подписчиков
10 февраля 2026 г.
🎬 ВидеоScore: 799
💠Привет! Это Анна, Flutter Team Lead Friflex Слышали про covariant? Как показывает практика, многие о нем слышали, но не до конца понимают, для чего он нужен. Разберемся! Covariant — это ключевое слово, которое используется для параметров методов. Оно разрешает переопределяющему методу в наследнике сузить тип параметра, указать более конкретный. Разберем на примере. У нас есть класс Vehicle. Создадим классы более конкретного транспорта — Car и Bike. class Vehicle {} class Car extends Vehicle {} class Bike extends Vehicle {} Теперь создадим класс Human, который будет реализовывать метод drive c определенным переданным объектом Vehicle. class Human { void drive(Vehicle vehicle) {} } В таком случае, когда мы захотим создать наследника Human — Driver, мы не сможем уточнить класс транспорта в параметрах drive. Нам придется сделать так: class Driver extends Human { @override void drive(Vehicle vehicle) {} // правильный вариант @override void drive(Car vehicle) // вызовет ошибку переопределения } И здесь нам на помощь придет covariant. Чтобы он работал, метод drive класса Human нужно видоизменить. class Human { void drive(covariant Vehicle vehicle) {} } Теперь в реализации Driver легко можно уточнить, какой конкретный тип требуется передать при вызове метода. class Driver extends Human { @override void drive(Car vehicle) {} } В таком случае метод drive у Driver принимает только Car, и попытка передать Bike приведет к ошибке типов. void main() { final car = Car(); final bike = Bike(); final driver = Driver(); driver.drive(bike); // ошибка argument_type_not_assignable driver.drive(car); // верное использование } ❤️ — если было полезно
726
просмотров
1716
символов
Нет
эмодзи
Да
медиа

Другие посты @flutterfriendly

Все посты канала →
💠Привет! Это Анна, Flutter Team Lead Friflex Слышали про co — @flutterfriendly | PostSniper