Czym tak naprawdę jest abstrakcja?
Na pewno wiecie, czym są klasy abstrakcyjne, a przynajmniej jak takie klasy definiujemy. Jak wiadomo klasy abstrakcyjne definiujemy za pomocą abstract class, następnie podajemy w definicji klasy metody abstrakcyjne, które będą musiały zostać pokryte we wszystkich (tym razem już nie-abstrakcyjnych) klasach dziedziczących po naszej nadrzędnej abstrakcyjnej klasie. Czym więc tutaj jest ta magiczna abstrakcja? Otóż wymusza ona niejako na wszystkich klasach potomnych utworzenie dokładnie takich metod, jakie w klasie bazowej (tej abstrakcyjnej) zostały określone. Klasa abstrakcyjna sama w sobie nie posiada definicji tychże metod, posiada jedynie ich deklaracje. Możemy więc powiedzieć, że do momentu utworzenia tych metod w klasach potomnych (dziedziczących) wszystkie te metody tak naprawdę nie istnieją, istnieją jedynie abstrakcyjnie. Niby są, a jednak jeszcze ich nie ma, gdyż istnieje dopiero póki co ich deklaracja, że takowe prawdopodobnie się gdzieś dalej w kodzie pojawią. Tym właśnie jest abstrakcja.Przyjrzyjmy się najprostrzej klasie abstrakcyjnej:
[code]
<?php
abstract class AbstractHuman {
// kod
}
[/code]