PHP - obiektowe PHP - klasy i funkcje abstrakcyjne
| DZIAŁANIE: | brak działania |
Kod:
brak kodu
Ewentualne Objaśnienia:
Klasy abstrakcyjne służą nam generalnie do tego samego co interfejsy. Jak pamiętacie chodziło o to, aby w interfejsach zawrzeć same nazwy funkcji - listę funkcji, które klasa implementująca ten interfejs będzie musiała w sobie zdefiniować. Każda klasa mogła mieć taką funkcję zupełnie inną od innej klasy, która również ten interfejs implementuje.
Do tego samego celu posłużyć możemy się klasami abstrakcyjnymi, których używamy po to aby każda klasa potomna zawierała i rzecz jasna unieważniała metody tej klasy abstrakcyjnej.
Klas abstrakcyjnych nie można egzemplarzować, czyli tworzyć obiektów takiej klasy.
PHP 5 pozwala również na tworzenie funkcji abstrakcyjnych, która jedynie wskazuje na tą funkcję ale jej nie implementuje czyli przykładowo :
abstract policzPole ($bok1, $bok2);
Każda klasa abstrakcyjna, która zawiera metody abstrakcyjne musi sama być abstrakcyjna , przykładowo :
abstract class wieloboki
{
abstract function PoliczObwod($bok1,$bok2,$bok3);
}
Jeśli metoda jest abstrakcyjna to każda dziedzicząca klasa musi ją nadpisywać i taka funkcja oczywiście nie ma swojej definicji w klasie abstrakcyjnej.
Jak już wspominałem taki sam efekt można uzyskać stosując interfejsy, które już znacie - ale tutaj warto zapamiętać, że metody w klasie abstrakcyjnej mogą być definiowane (czyli jakaś funkcja, której działanie zdefiniowano w klasie abstrakcyjnej będzie taka sama dla wszystkich klas, które po niej dziedziczą co czasem jest oczywiście bardzo potrzebne).