юни 15th, 2009

Продължаваме с Наследяване и Полиморфизъм.

Наследаването дава възможност един клас да наследи друг, т.е. ако имаме клас за животни, които има метод издай звук, то и неговия наследник клас куче ще има този метод… Обратното обаче не е задължително – класа наследник може да има всякакви методи, които класа родител ги няма.

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

Tags: , , , , , ,

2 отговор дo “Принципи и основни понятия в ООП – част 2”

  1. +9 Vote -1 Vote +1Nick
    казва:

    Ще се опитам да дам пример.

    Имаме клас 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

    Дано примера е полезен. Ще се радвам, ако някой даде друг или коригира този код. :)

  2. +5 Vote -1 Vote +1Новини
    казва:

    Нещо , нищо не разбрах :ц