Kategoria: C# Dodane przez marcin90

Jakie są różnice pomiędzy interfejsem a klasą abstrakcyjną?

1 odpowiedź

2 0 Dodane 10-06-2018 przez marcin90
Interfejs i klasa abstrakcyjna - różnice
  • Jeśli klasa bazowa nie musi bądź nie powinna dostarczać implementacji danych funkcjonalności a dla każdej klasy trzeba będzie osobno implementować funkcjonalność lepiej użyć interfejsu
  • Jeśli klasa bazowa powinna dostarczać implementację pewnych funkcjonalności i w niektórych przypadkach mogą być one nadpisane w klasach pochodnych lepiej użyć klasy abstrakcyjnej
  • Klasa może implementować jeden lub wiele interfejsów
  • Klasa może dziedziczyć tylko po jednej klasie abstrakcyjnej
  • Składowe interfejsu nie mogą być oznaczane atrybutem dostępu (domyślnie ustawiony jest public)
  • Składowe klasy abstrakcyjne mogą być oznaczane atrybutami dostępu (private, protected itp)
  • Interfejs umożliwia jedynie deklarację składowych, bez implementacji
  • Klasa abstrakcyjna umożliwia zarówno tylko deklarację składowych jak i pełną implementację, która może być jednak przesłonięta w klasach pochodnych
  • Interfejs może dziedziczyć jedynie po innych interfejsach
  • Klasa abstrakcyjna może dziedziczyć po klasach abstrakcyjnych, interfejsach a nawet zwykłych klasach
  • Jeśli sposób implementacji nie ma znaczenia lepiej jest użyć interfejsu
  • Jeśli sposób implementacji może mieć znaczenie w niektórych przypadkach lepiej użyć klasy abstrakcyjnej
  • Jeśli do interfejsu zostanie dodana nowa metoda trzeba prześledzić wszystkie klasy implementujące dany interfejs i dodać implementację nowej metody
  • Jesli do klasy abstrakcyjnej zostanie dodana nowa metoda klasy dziedziczące po danej klasie abstrakcyjnej będą mogły z korzystać z implementacji w klasie bazowej więc kod będzie działał poprawnie
  • W interfejsie nie możemy deklarować pól
  • W klasie abstrakcyjnej możemy deklarować pola
  • Interfejs nie może mieć konstruktora
  • W klasie abstrakcyjnej możemy dostarczyć implementację konstruktora domyślnego

Dodaj swoją wersję odpowiedzi

Dodajesz odpowiedź jako gość. Zaloguj się się by uzyskać dostęp do rankingu oraz powiadomień.