2013-10-08 4 views
0

Я часто вижу такой код:Confused - объекты, требующие методы вызова методов

X::y()->z(); 

Является ли это статический объект вызова метода у, результат у возвращающую объект, и этот объект, то вызов метода называется г?

спасибо.

+0

правильный. Или у вас есть какая-то контр-идея? –

+0

Довольно «да», если вы замените статический объект статическим классом –

+0

или вместо «статического объекта, вызывающего метод y», скажем «вызовите статический метод y класса X» –

ответ

1

Статический объект не вызывает y, но метод y вызывается классом, статически. Кроме того, вы правы.

+0

, что не на 100% правильное. Нет никаких доказательств того, что * X * является статическим. Вы можете только сказать, что * y * статично. –

+1

Правильно! X не будет статическим – Evert

0

Это может выглядеть следующим образом:

class X { 
    public static function y(){ 
    return new self(); 
    } 

    public function z(){ 

    } 
} 
+1

* y() * может что-то вернуть –

+1

@ Lame-up-duck Спасибо, я не знал об этом. Это был самый короткий пример. – vikingmaster

+0

Прошу прощения, если мой комментарий казался cpt. Очевидное цитирование :). Я думаю, что ваш ответ правильный, но не для этого вопроса. –

0

Вы вызываете статический метод у() на объекте X, а затем вы звоните г() метод на результирующем объекта, возвращаемого от y()

0

Это может быть или не быть вызов статического метода. Если вызов выполняется внутри экземпляра класса, а X является родительским элементом этого класса, то этот вызов может быть нестационарным.

Одно можно сказать точно: X::y() возвращает объект.

Смежные вопросы