[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переопределенные функции
Golovastik
Есть такое код:

<?php
class A
{
function example() {
echo "Это первоначальная функция A::example().<br>";
}
}


class B extends A {
function example() {
echo "Это переопределенная функция B::example().<br>";
A::example();
}
}



A::example();

// Создаем объект класса B.
$b = new B;

$b->example();
?>


Здесь создан класс А и его наследник класс B, в классе А объявлен метод с названием example и в классе B такой же метод объявлен.

Когда я написал так: A::example();
Я просто через глобальную область видимости к классу вызывал ег о метод, это вроде понятно,но после вот этого:
$b->example();
Вызывался метод из класса-потомка, а потом вызвался метод класса родителя после него, почему это так?
Почему после этого $b->example();выводится 2 раза, а не один класса-потомка?




Спустя 36 минут, 23 секунды (23.11.2010 - 03:14) waldicom написал(а):
Разве Вы его сами не вызываете?
Вот тут
function example() {
echo "Это переопределенная функция B::example().<br>";
A::example();
}

Спустя 6 часов, 26 минут, 37 секунд (23.11.2010 - 09:40) linker написал(а):
Цитата
Я просто через глобальную область видимости к классу вызывал ег о метод, это вроде понятно

Вы таким образом вызывали статический метод класса. Методы могут быть либо обычные, либо статические. В первом случае они принадлежат экземплярам класса, а во-втором случае непосредственно классам. Класс потом не может переопределить обычным методом, статический метод своего предка и наоборот. За такие кривые финты PHP 5.3 вам по рукам будет бить больно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.