Назад к вопросам
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, что позволяет повторно использовать код классов без прямого наследования.