Klasa abstrakcyjna to klasa, której obiekty nie mogą być tworzone za pomocą operatora new, czyli nie można tworzyć ich instancji: $obiekt = new Obiekt()
Klasa abstrakcyjna – nadrzędna – stanowi pewien wzorzec dla klas potomnych, które dziedziczą jej mechanizmy tworząc elastyczniejsze podejście do pisania programów.

Klasę abstrakcyjną deklarujemy modyfikatorem abstract:

Implementacja klasy abstrakcyjnej w klasie potomnej:

Klasa abstrakcyjna posiada w swoim organiźmie puste deklaracje metod abstrakcyjnych, ale może mieć również zwykłe funkcje oraz właściwości: zmienne i stałe.
Jeśli co najmniej jedna metoda w klasie zostanie zadeklarowana jako abstrakcyjna, to ta klasa musi zostać zadeklarowana jako abstrakcyjna.

Przykład:

Klasa Vehicle stanowi pewną abstrakcję. Pojazd to pojęcie ogólne; nie możemy wyobrazić go sobie jednoznacznie. Może to być samochód, motocykl, autobus itd. Aczkolwiek każdy z tych obiektów może posiadać pewne cechy wspólne np: marka, model, kolor, moc silnika, które mogą być implementowane przez klasy potomne np: Truck (samochód ciężarowy).

Wszystkie funkcje abstrakcyjne z klasy abstrakcyjnej muszą być zaimplementowane w klasach potomnych, które po niej dziedziczą (extends). Pozostałe zmienne i funkcje zwykłe mogą lub nie muszą być implementowane w klasach potomnych. Jak widać, funkcje abstrakcyjne w klasie Truck mają konkretną postać, tj. sygnatura musi być zachowana zgodnie z deklaracjami w klasie abstrakcyjnej np: brand($name), natomiast zawartość poszczególnych funkcji jest dowolna i każda klasa potomna może inaczej obrabiać te dane. Oczywiście klasa potomna może posiadać własne funkcje np: engine($power).

PODSUMOWANIE

  • klasa abstrakcyjna to klasa, której obiekty nie mogą być tworzone,
  • klasę abstrakcyjną deklarujemy za pomocą modyfikatora abstract,
  • klasa abstrakcyjna może posiadać puste metody abstrakcyjne (bez zawartości), zwykłe funkcje oraz zmienne i stałe,
  • wszystkie metody abstrakcyjne z klasy abstrakcyjnej muszą być zaimplementowane w klasach, które po niej dziedziczą.

INTERFEJSY →