Junior — Middle
Jakie są różnice między klasą abstrakcyjną a interfejsem w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
Klasa abstrakcyjna i interfejs to różne mechanizmy do opisywania kontraktów i zachowań w programowaniu obiektowym, ale z kluczowymi różnicami:
-
Klasa abstrakcyjna może zawierać zarówno metody abstrakcyjne (bez implementacji), jak i konkretne metody z implementacją. Może mieć stan (pola). Klasy dziedziczą po klasie abstrakcyjnej i mogą nadpisywać metody.
-
Interfejs opisuje tylko zestaw metod bez implementacji i nie zawiera stanu. Klasa implementująca interfejs musi zaimplementować wszystkie jego metody.
Przykład różnic:
- Klasa abstrakcyjna jest odpowiednia, gdy trzeba zdefiniować podstawową implementację i wspólny stan dla dziedziczących.
- Interfejs służy do opisywania możliwości, które mogą być realizowane przez różne klasy bez związku dziedziczenia.
Na przykład, interfejs Flyable może opisywać metodę fly(), a klasa abstrakcyjna Bird może zawierać pole wingSpan i metodę sing() z implementacją.