nyctota
09.01.2008, 12:41
Есть классы (для примера приведены совершенно бесполезные):
class A {
public static function init()
{
trace("A --> init");
A.invokeMe();
}
private static function invokeMe()
{
trace("A --> invokeMe()");
}
}
и расширяющий его
class B extends A {
public static function init()
{
trace("B --> init");
B.invokeMe();
}
private static function invokeMe()
{
trace("B --> invokeMe()");
}
}
Если вызвать метод init() класса B, то почему-то вызывается метод invokeMe() надкласса, то есть:
B.init();
выдает trace:
B --> init
A --> invokeMe()
При этом замечено, что если в классе B вызывать метод invokeMe() без конкретного указания класса, то все происходит как должно быть.
В растерянности =/ Разъясните ситуацию, пожалуйста.
class A {
public static function init()
{
trace("A --> init");
A.invokeMe();
}
private static function invokeMe()
{
trace("A --> invokeMe()");
}
}
и расширяющий его
class B extends A {
public static function init()
{
trace("B --> init");
B.invokeMe();
}
private static function invokeMe()
{
trace("B --> invokeMe()");
}
}
Если вызвать метод init() класса B, то почему-то вызывается метод invokeMe() надкласса, то есть:
B.init();
выдает trace:
B --> init
A --> invokeMe()
При этом замечено, что если в классе B вызывать метод invokeMe() без конкретного указания класса, то все происходит как должно быть.
В растерянности =/ Разъясните ситуацию, пожалуйста.