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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как получить доступ к родительской переменной, если она перезаписана в досернем классе?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: PHP OOP
Gary
Отправлено: 15 Ноября, 2014 - 12:50:58
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Ув. коллеги, помогите разобраться.

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

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

Вот код...

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.

В общем туплю уже второй день... срочно нужна помощь.

(Отредактировано автором: 15 Ноября, 2014 - 12:52:58)

 
 Top
LIME
Отправлено: 15 Ноября, 2014 - 14:21:31
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




LIME пишет:
этого не надо хотеть
ООП создано для облегчения работы а не всяческих хитровывернутых извращений
если это задача от препода то напиши этому идиоту любой бред ...получи свою незаслуженную двойку и забудь на всю жизнь
я если честно даже не уверен что надо чтото делать
вроде и так выведет что надо...не self же
но мне по тому самому подобные задачи


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

Выводит Second по тому как метод по умолчанию не переопределён в классе-наследнике и он подхватывает новое значение свойства. А по поводу self:: я как раз и думаю... но пока никак не могу выстроить этот вариант со статикой.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB