2017-02-11 45 views
-1

Вот код, который я беру с другого поста: Is what seems like polymorphism in PHP really polymorphism?Полиморфизм - это не что иное, как переписывание функций унаследованных классов?

class Animal { 
    var $name; 
    function __construct($name) { 
     $this->name = $name; 
    } 
} 

class Dog extends Animal { 
    function speak() { 
     return "Woof, woof!"; 
    } 
} 

class Cat extends Animal { 
    function speak() { 
     return "Meow..."; 
    } 
} 

$animals = array(new Dog('Skip'), new Cat('Snowball')); 


foreach($animals as $animal) { 
    print $animal->name . " says: " . $animal->speak() . '<br>'; 
} 
+0

есть ли здесь вопрос? –

+0

Вопрос в том, верно ли это утверждение? Что я могу увидеть здесь, мы назначаем две функции с одинаковым именем для разных классов, Есть ли одно или два объяснения предложения для полиморфизма –

+0

Вы можете использовать [черты] (http://php.net/manual /en/language.oop5.traits.php) для полиморфизма в PHP. – x01saa

ответ

1

Полиморфизм означает, что отправитель стимула не нужно знать класса принимающего экземпляра. Получающий экземпляр может вносить в произвольный класс.

(Object-Oriented Software Engineering: A Use Case Driven Approach, с.55)

В этом случае отправитель является оператор печати, который вызывает $animal->name и $animal->speak(). Экземпляр объекта может быть произвольного класса, который реализует атрибут name и метод speak, пока все это работает. Таким образом, по этому определению полиморфизм.

Или иначе, что вы подразумеваете под полиморфизмом? (Разные люди могут иметь разное понимание одного и того же слова)

+0

AFAIK, полиморфизм имеет одно значение, и я не уверен, что ваш правильный ... –

+0

Просто цитируя книгу. Не мой. Какое определение вы знаете? –

+0

Если я не ошибаюсь, полиморфизм - это способность данного класса предоставлять набор функций/методов и позволить его специализациям переопределять их реализации. –

 Смежные вопросы

  • Нет связанных вопросов^_^