SkillsTest.pl C# pytania i zadania rekrutacyjne Jakie są różnice pomiędzy interfejsem a klasą abstrakcyjną?

: 2017-09-28 | Nr 11 z 51

Pytanie

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

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

Polecamy

Na co możesz wydać swoje 15k?

Zabawki dla dwulatka