Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов метода родительского класса из производного (parent::)
 
 автор: tAleks   (08.09.2007 в 17:06)   письмо автору
 
 


parent::check();


Говорит: Cannot make static method class1::check() non static in class class2

Как я понимаю, что ему не нравиться что метод class1::check() не объявлен как статический.
В связи с этим вопрос: А что, вызывать можно только методы которые объявлены как статические? Или я че-то не то делаю?

   
 
 автор: Trianon   (08.09.2007 в 17:16)   письмо автору
 
   для: tAleks   (08.09.2007 в 17:06)
 

написать какой из классов родительский , а какой порожденный ,
какой метод статический, а какой - обычный - уже никак?

   
 
 автор: cheops   (09.09.2007 в 10:31)   письмо автору
 
   для: tAleks   (08.09.2007 в 17:06)
 

А вы где этот метод вызваете?

   
 
 автор: Artem S.   (09.09.2007 в 13:41)   письмо автору
 
   для: tAleks   (08.09.2007 в 17:06)
 

Нет, вызывать можно и обычные и статические. Просто есть ограничение, что статический метод, был статическим в потомке. Либо назовите в потомке свой метод другим именем, либо сделайте в родителе класс не статичским

   
 
 автор: Trianon   (09.09.2007 в 13:48)   письмо автору
 
   для: Artem S.   (09.09.2007 в 13:41)
 

>Просто есть ограничение, что статический метод, был статическим в потомке.

Это, как бы сказать помягче, не ограничение. Это логика чистой воды.

Статический метод не работает с экземпляром, и даже не знает о его существовании.
Обычному методу требуется передать ссылку на экземпляр. А где статический метод эту ссылку возьмет, если об экземпляре знать не знает?
Конечно, если статический метод попросить вызвать обычный, хоть своего класса, хоть родителя - он загнется.

   
 
 автор: cheops   (09.09.2007 в 19:53)   письмо автору
 
   для: Trianon   (09.09.2007 в 13:48)
 

>Конечно, если статический метод попросить вызвать обычный, хоть своего класса, хоть
>родителя - он загнется.
Да, так в любом объектно-ориентированном языке программирования кроме PHP - в нём если метод не обращается к членам объекта - он ведёт себя как статический и его, что самое странное, можно вызывать без создания объекта. Дурдом, конечно, но до сих пор не исправлено.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования