<?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 вам по рукам будет бить больно.