Junior
Jakie aspekty programowania obiektowego występują w języku Dart?
sobes.tech AI
Odpowiedź od AI
W Dart istnieją następujące aspekty programowania obiektowego:
- Klasy i obiekty: Możliwość definiowania klas z polami i metodami, tworzenia instancji klas (obiektów).
- Enkapsulacja: Ukrywanie szczegółów implementacji za pomocą modyfikatorów dostępu (
_dla członków prywatnych) i metod getter/setter. - Dziedziczenie: Rozszerzanie funkcjonalności istniejących klas za pomocą słowa kluczowego
extends. - Polimorfizm: Możliwość obsługi obiektów różnych klas w jednolity sposób poprzez wspólny interfejs lub klasę bazową.
- Abstrakcja: Tworzenie klas abstrakcyjnych i interfejsów do definiowania kontraktów.
Przykład klasy w Dart:
class Animal {
String _name; // Prywatne pole
Animal(this._name); // Konstruktor
String get name => _name; // Getter
void makeSound() {
print('Ogólny dźwięk zwierzęcia'); // Metoda
}
}
Przykład dziedziczenia:
class Dog extends Animal {
Dog(String name) : super(name); // Wywołanie konstruktora klasy bazowej
@override // Nadpisanie metody klasy bazowej
void makeSound() {
print('Hau!');
}
}
Przykład polimorfizmu:
void makeAnimalSound(Animal animal) {
animal.makeSound(); // Wywołanie metody makeSound(), która może być różna dla różnych typów Animal
}
// Użycie:
// makeAnimalSound(Dog('Buddy')); // Wypisze "Hau!"
Dart obsługuje również mixiny za pomocą słowa kluczowego with, co pozwala na wielokrotne użycie kodu klas bez bezpośredniego dziedziczenia.