Исследование возможностей ключевого слова Super Dart: методы, конструкторы и многое другое

“dart super” на английском языке означает использование ключевого слова superв языке программирования Dart. В Dart superиспользуется для ссылки на суперкласс производного класса, позволяя вам получать доступ и вызывать методы или конструкторы из суперкласса.

В этой статье блога мы рассмотрим различные варианты использования и примеры ключевого слова superв Dart. Мы рассмотрим различные сценарии эффективного использования superи продемонстрируем его практическое применение.

  1. Доступ к методам суперкласса.
    Один из распространенных вариантов использования 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(), мы можем вызвать реализацию суперкласса перед добавлением дополнительного поведения в подкласс.

  2. Вызов конструкторов суперкласса.
    Ключевое слово 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в суперклассе, одновременно добавляя дополнительные свойства в подкласс.

  3. Использование 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обеспечивает удобный способ использования и расширения функциональности суперкласса, будь то вызов методов, конструкторов суперкласса или работа с геттерами и сеттерами.