작성
·
194
0
답변 1
2
안녕하세요. 답변이 늦어 죄송합니다. 코드를 살펴보죠.
일단, 상속에서 자식클래스에서 찾을 수 없는 경우에는 부모클래스에서 찾는게 기본적인 동작이라고 보시면 됩니다. 그 예로 B::test() 에서 self::foo() 를 시도하였으나 찾지못하였기 때문에 부모의 A::foo() 를 호출(A Foo)하였습니다.
A::foo() 에서 static::who() 를 호출, 그러나 A 가 아닌 B Foo 가 나온 것은 Static Context 의 경우 Lazy 하게 동작하기 때문입니다. 따라서 A::who() 가 아닌 B::who() 가 호출되었습니다. 만약 static::who() 가 아니라 self::who() 였다면 A::who() 가 호출되었을 것입니다. 이 과정에서 따라 B::test()->A::foo()->B::who() 가 호출되었으므로 출력은 A Foo, B Foo, B 순서로 나오게됩니다.
정확한 답변 감사드립니다 선생님 강의 잘 보고 있습니다 : )