Помощник
|
Абстрактные классы |
romantik2011
|
Сообщение
#1
|
||
|
|
||
|
|||
romantik2011
|
Сообщение
#2
|
|
Да, точно, меня интересует пример №1.
Скажите, какой же здесь полиморфизм, как говорится в книге, что мол в методе класса-родителя вызывается метод класса потомка, но объект же создаётся класса-потомка всё-таки. Вот, смотрите: [PHP] $a->Call(); // выводит "Test from A" |объект создался от класса А, значит и функц. класса А вызывается $b->Test(); // выводит "Test from B" |объект создался от класса B, значит и функц. класса B вызывается $b->Call(); // Внимание! Выводит "Test from B"! |Так здесь наоборот вызывается метод из класса-родителя в классе-потомке, а не в классе-родителя вызывается метод потомка [/PHP] Если полиморфирзм - это когда метод в классе-родителе вызывает метод класса-потомка, я не вижу чтоб здесь в классе-родите вызывался метод-класса-потомка, объект всё равно же создаётся от потомка, а не от родителя. |
|
|
alexdrob |
27.7.2011, 1:03;
Ответить: alexdrob
Сообщение
#3
|
|
Parse error: syntax error, unexpected ';', expecting T_FUNCTION in C:\www\htdocs\test.ru\www\index.php on line 11 ну так после функции точку с запятой не ставят, это ставят после абстрактных только, а вы после всех поставили. Fatal error: Call to undefined function Test() in C:\www\htdocs\test.ru\www\index.php on line 7 ну так правильно, функции Test и нет. Вам нужно вызвать функции класса. Пишите [PHP]function Call() { $this->Test(); }[/PHP] |
|
|
alexdrob |
27.7.2011, 1:11;
Ответить: alexdrob
Сообщение
#4
|
|
|
Да, точно, меня интересует пример №1. Скажите, какой же здесь полиморфизм, как говорится в книге, что мол в методе класса-родителя вызывается метод класса потомка, но объект же создаётся класса-потомка всё-таки. Вот, смотрите: 1 2 3 4 $a->Call(); // выводит "Test from A"* |объект создался от класса А, значит и функц. класса А вызывается $b->Test(); // выводит "Test from B"* |объект создался от класса B, значит и функц. класса B вызывается $b->Call(); // Внимание! Выводит "Test from B"!* |Так здесь наоборот вызывается метод из класса-родителя в классе-потомке, а не в классе-родителя вызывается метод потомка Если полиморфирзм - это когда метод в классе-родителе вызывает метод класса-потомка, я не вижу чтоб здесь в классе-родите вызывался метод-класса-потомка, объект всё равно же создаётся от потомка, а не от родителя. что то вы понаписали, не совсем понятно... я не вижу чтоб здесь в классе-родите вызывался метод-класса-потомка а это что? $b->Call(); // Внимание! Выводит "Test from B"! у класса B нет метода Call => метод Call вызван для родителя. а метод родителя Call вызывает функцию Test а функция тест родителя выводит Test from A но в примере вы увидите Test from B так как вы вызвали метод Call через класс B, у него нет своего метода Call и он как бы вызывает метод родителя, но тот в свою очередь вызывает метод объявленный в классе B То есть получается что метод класса А вызвал метод класса Б
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
На постоянной основе продаю handmade мастер-классы, есть Новый год Описание и уникальные фотографии |
3 | Вдохновение | 3281 | 27.12.2018, 2:01 автор: Emtec |
|
Продаю Мастер-классы по декупажу | 0 | jemka | 1635 | 2.3.2012, 11:55 автор: jemka |
Текстовая версия | Сейчас: 25.4.2024, 21:30 |