에서 부모 클래스의 자식 메서드를 호출? 내가 다음과 같은 오류 준 코드를 실행했을 때는 다음 클래스 계층 구조를 갖는 PHP
문제는 다음과 같습니다 $this
parse()
에서 호출하지 말아야 TheParent
에서 TheChild
상속 때문에
Fatal error: Call to private method TheChild::validate() from context 'TheParent' on line 4
을 $child
의 인스턴스를 참조 할 수 있으므로 validate()
가 표시됩니다 ~ parse()
?
참고 :
나는 완전히이에서 작업하는 이유를 이해하지 않지만이 문제에 대한 해결책은, PHP 매뉴얼에 this comment에 따라 validate()
기능 protected
을 만들 것 중 하나를 발견 어떤 연구를하고 후 케이스.
제 2 용액은 상위에서 abstract protected
방법 validate()
을 만들고 아이 protected
방법은 상위에서 액세스 할 수있는 제 용액 (중복되는) 하위에 재정의한다?!
누군가이 경우 상속이 어떻게 작동하는지 설명해 주실 수 있습니까?
hmmm 내 코드에서'$ child-> parse()'를 호출하면 부모 클래스에서'parse' 함수를 실행하고 그 안에'$ this'가 자식이 아닌 부모 클래스 인스턴스를 참조 할 것입니까? – Songo
인스턴스는 하나이지만 인스턴스의 관점에서 볼 수 있습니다. 부모 클래스의 개인 메소드는 단순히 호출 할 수 없습니다. 이것은'private','protected'와'public'의 정확한 목적과 차이점입니다. – Evert