0
현재 클래스뿐만 아니라 현재 클래스를 확장하는 모든 클래스에서만 사용할 수 있도록하려면 "보호 된"메서드를 만들어야한다는 것을 알고 있습니다.부모 클래스에서 보호 된 메서드에 액세스
좋아요, grandChildClass :: method2()는 자식에서 확장되므로 보호해야합니다.
하지만 parentClass :: method2()와 같은 부모 클래스에서 액세스하는 경우 어떻게해야합니까?
class parentClass
{
public function method1() {$this->method2();}
}
class childClass extends parentClass
{
protected function method2() {}
}
class grandChildClass extends childClass
{
public function method3() {$this->method2();}
}
이 클리너를 만들기 위해'parentClass'는'method2'의 순수 가상 버전을'virtual method2() = 0;'처럼 정의 할 수 있습니다. 이것은 명시 적으로 childClass가'parentClass' 메소드를 호출 할 수 있도록'method2()'함수를 구현할 것을 요구합니다. – Alan
감사합니다. 나는 당신이 진술 한대로 작동하기를 바랬습니다! 나는 혼란스러워했고, 부모 클래스에서 정의 된 메서드에 액세스하고 있었지만, 손자 클래스 내에서 정의 된 메서드에 액세스하고있었습니다. 따라서 childClass 메서드가 제대로 작동했습니다. – user1032531
@Alan : PHP에는'virtual' 메서드가 없습니다. 클래스와 그 메소드를 '추상적'으로 정의 할 수 있습니다 (이는 단지 정의 만하고 인스턴스화 할 수 없음을 의미합니다). –