Junior
Кои аспекти на обектно-ориентираното програмиране присъстват в езика Dart?
sobes.tech AI
Отговор от AI
В Dart съществуват следните аспекти на ООП:
- Класове и обекти: Възможност за дефиниране на класове с полета и методи, създаване на екземпляри от класове (обекти).
- Инкапсулация: Скриване на детайлите за реализация чрез модификатори за достъп (
_за частни членове) и гетъри/сетъри. - Наследяване: Разширяване на функционалността на съществуващи класове с помощта на ключовата дума
extends. - Полиморфизъм: Възможност за обработка на обекти от различни класове по единен начин чрез общ интерфейс или базов клас.
- Абстракция: Създаване на абстрактни класове и интерфейси за определяне на договори.
Пример за клас в Dart:
class Animal {
String _name; // Частно поле
Animal(this._name); // Конструктор
String get name => _name; // Геттер
void makeSound() {
print('Общ звук на животно'); // Метод
}
}
Пример за наследяване:
class Dog extends Animal {
Dog(String name) : super(name); // Вика конструктора на базовия клас
@override // Презаписване на метода на базовия клас
void makeSound() {
print('Ууф!');
}
}
Пример за полиморфизъм:
void makeAnimalSound(Animal animal) {
animal.makeSound(); // Вика метода makeSound(), който може да е различен за различните типове Animal
}
// Използване:
// makeAnimalSound(Dog('Buddy')); // Ще изведе "Ууф!"
Dart също поддържа миксини с помощта на ключовата дума with, което позволява повторно използване на код на класове без директно наследяване.