Dzisiaj szybkie podsumowanie tematu klas abstrakcyjnych i interfejsu.

Linki do poprzednich wpisów 🙂

Interface

Abstrakcja

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 🙂