Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как получить доступ к родительской переменной, если она перезаписана в досернем классе?
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Как получить доступ к родительской переменной, если она перезаписана в досернем классе?

Страниц (1): [1]
 

1. Gary - 15 Ноября, 2014 - 12:50:58 - перейти к сообщению
Ув. коллеги, помогите разобраться.

Нужно решить следующую задучу:

Получить доступ к родительской переменной в объекте наследника, в ситуации когда она перезаписана в дочернем классе?

Вот код...

PHP:
скопировать код в буфер обмена
  1.  
  2. class First {
  3.  
  4.       protected $number = "First";
  5.      
  6.       protected function getNumber() {
  7.          
  8.          return $this->number;
  9.  
  10.       }
  11.  
  12.    }
  13.  
  14.    class Second extends First {
  15.  
  16.       protected $number = "Second";
  17.  
  18.    }
  19.    
  20.    $first = new First;
  21.    
  22.    $second = new Second;
  23.  
  24.    // здесь нужно вывести "First"
  25.    echo $second->getNumber();
  26.  



Обязательное условие - нельзя менять свойства в этих классах и методы. Можно лишь путем дописывания новой части кода манипулировать.

Самое "умное" Не понял до чего я сам дорыл, это переопределить метод в дочернем классе и сделать его паблик. Но, это проблему не решает. Я вижу вывод лишь переписанного значения переменной $number.

В общем туплю уже второй день... срочно нужна помощь.
2. LIME - 15 Ноября, 2014 - 14:21:31 - перейти к сообщению
этого не надо хотеть
ООП создано для облегчения работы а не всяческих хитровывернутых извращений
если это задача от препода то напиши этому идиоту любой бред ...получи свою незаслуженную двойку и забудь на всю жизнь
я если честно даже не уверен что надо чтото делать
вроде и так выведет что надо...не self же
но мне по тому самому подобные задачи
3. Gary - 15 Ноября, 2014 - 14:29:57 - перейти к сообщению
LIME пишет:
этого не надо хотеть
ООП создано для облегчения работы а не всяческих хитровывернутых извращений
если это задача от препода то напиши этому идиоту любой бред ...получи свою незаслуженную двойку и забудь на всю жизнь
я если честно даже не уверен что надо чтото делать
вроде и так выведет что надо...не self же
но мне по тому самому подобные задачи


Не, не от препода, но все равно спасибо за намёк.

Выводит Second по тому как метод по умолчанию не переопределён в классе-наследнике и он подхватывает новое значение свойства. А по поводу self:: я как раз и думаю... но пока никак не могу выстроить этот вариант со статикой.

 

Powered by ExBB FM 1.0 RC1