Продължаваме с Наследяване и Полиморфизъм.
Наследаването дава възможност един клас да наследи друг, т.е. ако имаме клас за животни, които има метод издай звук, то и неговия наследник клас куче ще има този метод… Обратното обаче не е задължително – класа наследник може да има всякакви методи, които класа родител ги няма.
Полиморфизъм е сложно понятие.
Казано с две думи, това е възможността класа да изглежда по един начин от една гледна точка, и по друг от друга. Комбинирано с наследяването тези две простички концепции са в основата на мощта на съвременните платформи за програмиране.
Например: да вземем за пример класа за наследяването: всяко животно има метод издай звук.
При извикване на този метод за производния клас Куче ще се чува кучешки лай, а при извикване на метода на клас Коте ще се чува мяукане.
За клиента на класа, какво животно издава звук няма значение – за него това си е един и същи метод.



Ще се опитам да дам пример.
Имаме клас zivotni:
class zivotni{
public function zvuk($noise=''){
echo (empty($noise)) ? 'Default Noise':$noise;
}
}
Класът dog наследява zivotni, т.е. има метода zvuk, но за класа куче звука е винаги лай. Благодарение на полиморфизма можем да извикаме наследения метод както е дефиниран в родителския клас, както и характерния за класа куче:
class dog extends zivotni{
public function zvuk($noise='djaf-jaf'){
parent::zvuk($noise); // Наследяване
echo "\r\n".$noise." ot class dog\r\n"; //полиморфизъм
}
}
Ето какво се случва при изпълнение:
$tmp=new dog();
$tmp->zvuk();
php -f MyFile.php
djaf-jaf
djaf-jaf ot class dog
Дано примера е полезен. Ще се радвам, ако някой даде друг или коригира този код.
Нещо , нищо не разбрах :ц