INF.04 · pytanie 307
Co to jest klasa abstrakcyjna?
- AKlasa, która nie może mieć żadnych metod
- BKlasa, która może być dziedziczona, ale nie można utworzyć jej obiektuPoprawna
- CKlasa, która zawsze dziedziczy z klasy bazowej
- DKlasa, która nie może zawierać metod wirtualnych
Wyjaśnienie
Klasa abstrakcyjna to taki typ w programowaniu obiektowym, który służy jako baza dla innych klas, ale sam nie powinien być tworzony jako gotowy obiekt. Czyli można po niej dziedziczyć, ale nie można zrobić czegoś w stylu new KlasaAbstrakcyjna, jeśli język na to nie pozwala, np. w Javie, C# czy C++. Ma to sens praktyczny: taka klasa opisuje wspólne cechy i zachowania, ale często jest zbyt ogólna, żeby istniała samodzielnie. Przykład: abstrakcyjna klasa Pojazd może mieć pola prędkość, masa i metodę jedź, ale konkretnymi obiektami będą Samochód, Rower albo Autobus. W dobrych praktykach OOP używa się klas abstrakcyjnych do modelowania wspólnego kontraktu i częściowej implementacji. Moim zdaniem to jeden z ważniejszych mechanizmów przy projektowaniu większych aplikacji, bo pomaga unikać duplikacji kodu i porządkuje hierarchię klas. Klasa abstrakcyjna może zawierać normalne metody, pola, konstruktory, metody wirtualne oraz metody abstrakcyjne, zależnie od języka. Ważne jest to, że wymusza na klasach potomnych doprecyzowanie zachowania, którego sama nie potrafi sensownie wykonać.