Назад к вопросам
Junior
144
questionbank

Какие аспекты объектно-ориентированного программирования присутствуют в языке Dart?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Dart присутствуют следующие аспекты ООП:

  • Классы и объекты: Возможность определять классы с полями и методами, создавать экземпляры классов (объекты).
  • Инкапсуляция: Скрытие деталей реализации посредством модификаторов доступа (_ для приватных членов) и методов-геттеров/сеттеров.
  • Наследование: Расширение функциональности существующих классов с помощью ключевого слова extends.
  • Полиморфизм: Возможность обрабатывать объекты разных классов единообразно через общий интерфейс или базовый класс.
  • Абстракция: Создание абстрактных классов и интерфейсов для определения контрактов.

Пример класса в Dart:

class Animal {
  String _name; // Приватное поле

  Animal(this._name); // Конструктор

  String get name => _name; // Геттер

  void makeSound() {
    print('Some generic animal sound'); // Метод
  }
}

Пример наследования:

class Dog extends Animal {
  Dog(String name) : super(name); // Вызов конструктора базового класса

  @override // Переопределение метода базового класса
  void makeSound() {
    print('Woof!');
  }
}

Пример полиморфизма:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Вызов метода makeSound(), который может быть разным для разных типов Animal
}

// Использование:
// makeAnimalSound(Dog('Buddy')); // Выведет "Woof!"

Dart также поддерживает миксины (mixins) с помощью ключевого слова with, что позволяет повторно использовать код классов без прямого наследования.