Klasa abstrakcyjna to klasa, która nie może tworzyć referencji do obiektów za pomocą operatora new. Klasę abstrakcyjną oznacza się słowem kluczowym abstract.

Klasa abstrakcyjna może zawierać deklaracje metod abstrakcyjnych, zwykłe metody, stałe i składowe finalne.

Przykład:

Aby lepiej zdefiniować sens abstrakcji w programowaniu posłużmy się przykładem z życia. Klasą abstrakcyjną może być figura geometryczna. Nie wiemy jak wygląda „figura”, dla nas to ogólne pojęcie, abstrakcyjny byt, którego nie potrafimy sobie wyobrazić. Możemy natomiast zdefiniować właściwości owej figury, np: pole powierzchni, obwód, które mogą być dziedziczone przez konkretne klasy potomne (i które możemy sobie wyobrazić 🙂 np: Kwadrat, Prostokat, Trójkąt itd.

Klasa abstrakcyjna jest pewnego rodzaju wzorcem dla klas potomnych.

Klasa Figura zawiera dwie metody abstrakcyjne, które zwracają wartości zmiennoprzecinkowe – double. W odróżnieniu od interfejsów metody abstrakcyjne muszą określać typ zwracanych wartości. Klasy potomne, dziedziczące klasę abstrakcyjną muszą zaimplementować wszystkie jej metody abstrakcyjne. Ponadto klasa abstrakcyjna może posiadać również zwykłe metody, które nie muszą być implementowane w klasach potomnych.

Z powyższego przykładu wiemy już, że klasy potomne będą obliczać pole powierzchni i obwód danej figury. Klasa abstrakcyjna nie podaje konkretów dla metod obliczeniowych, bo każda figura ma przecież inny wzór matematyczny na przeliaczanie tych niewiadomych. Jak widać, jest to elastyczne podejście dające nam dużo swobody w projektowaniu.

Przykłady klas potomnych implementujących klasę abstrakcyjną Figura:

Użycie klasy abstrakcyjnej i klas dziedziczących jej składowe:

Czytaj dalej: KONSTRUKTOR →