Dzisiaj szybkie podsumowanie tematu klas abstrakcyjnych i interfejsu.
Linki do poprzednich wpisów 🙂
Nie można utworzyć instancji klasy abstrakcyjnej ani interfejsu.
Klasa może dziedziczyć tylko po jednej klasie abstrakcyjnej, ale może dziedziczyć po wielu interfejsach.
Klasa abstrakcyjna może mieć w sobie implementację, a interface nie (do wersji C# 8.0 opublikowanej w sierpniu 2019).
Od 2019 klasa abstrakcyjna dalej może mieć implementację, a interface może mieć prostą implementację metod.
Prostą to znaczy, że nie może korzystać z np. z wstrzykiwanych przez konstruktor serwisów, repozytoriów itd. (jeżeli nie wiesz o co chodzi spokojnie dowiesz się w kolejnych wpisach).
Interface może dziedziczyć tylko po innych interfejsach. Klasa abstrakcyjna może dziedziczyć po klasach abstrakcyjnych, interfejsach a nawet po zwykłych klasach.
Kiedy używać klasy abstrakcyjnej a kiedy interfejsu ?
Zacznij od interfejsu i używaj interfejsu chyba, że chcesz lub potrzebujesz, aby metoda posiadała implementację, wtedy użyj klasy abstrakcyjnej, która dziedziczy po interfejsie 🙂