Sobes.tech
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ą.