“dart super” на английском языке означает использование ключевого слова superв языке программирования Dart. В Dart superиспользуется для ссылки на суперкласс производного класса, позволяя вам получать доступ и вызывать методы или конструкторы из суперкласса.
В этой статье блога мы рассмотрим различные варианты использования и примеры ключевого слова superв Dart. Мы рассмотрим различные сценарии эффективного использования superи продемонстрируем его практическое применение.
-
Доступ к методам суперкласса.
Один из распространенных вариантов использованияsuper— вызов методов суперкласса. Это особенно полезно, когда вы хотите переопределить метод в подклассе, но при этом хотите получить доступ к реализации метода в суперклассе. Вот пример:class Animal { void makeSound() { print('The animal makes a sound'); } } class Dog extends Animal { @override void makeSound() { super.makeSound(); // invoking the superclass method print('The dog barks'); } } void main() { Dog dog = Dog(); dog.makeSound(); }Выход:
The animal makes a sound The dog barksВ приведенном выше примере класс
Dogрасширяет классAnimalи переопределяет методmakeSound(). Используяsuper.makeSound(), мы можем вызвать реализацию суперкласса перед добавлением дополнительного поведения в подкласс. -
Вызов конструкторов суперкласса.
Ключевое словоsuperтакже можно использовать для вызова конструкторов суперкласса. Это полезно, когда вы хотите повторно использовать логику инициализации суперкласса в подклассе. Вот пример:class Vehicle { String brand; Vehicle(this.brand); } class Car extends Vehicle { String model; Car(String brand, this.model) : super(brand); } void main() { Car car = Car('Ford', 'Mustang'); print('Brand: ${car.brand}, Model: ${car.model}'); }Выход:
Brand: Ford, Model: MustangВ приведенном выше примере класс
Carрасширяет классVehicleи вызывает конструктор суперкласса с помощьюsuper(brand). Это позволяет нам инициализировать свойствоbrandв суперклассе, одновременно добавляя дополнительные свойства в подкласс. -
Использование Super с геттерами и сеттерами.
Ключевое словоsuperтакже можно использовать с геттерами и сеттерами для доступа или переопределения свойств в суперклассе. Это полезно, если вы хотите настроить поведение геттеров и сеттеров в подклассе, сохраняя при этом логику суперкласса. Вот пример:class Person { String _name; String get name => _name; set name(String value) { _name = value; } } class Student extends Person { @override set name(String value) { super.name = value.toUpperCase(); } } void main() { Student student = Student(); student.name = 'John Doe'; print(student.name); }Выход:
JOHN DOEВ приведенном выше примере класс
Studentрасширяет классPersonи переопределяет установщик свойстваname. Используяsuper.name, мы можем получить доступ к установщику суперкласса и изменить входное значение перед присвоением его свойству.
К этому моменту вы уже должны хорошо понимать, как использовать ключевое слово superв Dart. Ключевое слово superобеспечивает удобный способ использования и расширения функциональности суперкласса, будь то вызов методов, конструкторов суперкласса или работа с геттерами и сеттерами.