PHP는 웹 애플리케이션을 개발하는 데 자주 사용되는 매우 인기 있는 서버 측 스크립팅 언어입니다. PHP에서는 속성과 메서드를 가질 수 있는 클래스를 정의할 수 있습니다. 클래스 메서드의 액세스 한정자에는 public, private 및 protected가 있습니다. 그 중 public은 클래스 외부에서 접근이 가능하고 protected와 private은 접근이 불가능하다는 뜻입니다.
상속 관계에서 하위 클래스는 상위 클래스의 공개 메서드와 속성을 상속할 수 있지만 하위 클래스는 상위 클래스의 비공개 메서드를 상속할 수 없습니다. 이 기사에서는 PHP 상위 클래스의 비공개 메소드에 관한 관련 문제를 논의합니다.
먼저 프라이빗 메소드를 이해해야 합니다.
프라이빗 메서드는 클래스 내에서만 접근할 수 있고 클래스나 서브클래스 외부에서는 접근할 수 없는 메서드를 말합니다. PHP에서는 메소드 앞에 private을 추가하여 비공개 메소드를 정의할 수 있습니다. 예:
class ParentClass { private function privateMethod() { // some code here } }
이 예에서 privateMethod()는 비공개 메서드이며 ParentClass 클래스에서만 액세스할 수 있습니다. 클래스 외부나 하위 클래스에서 이 메서드에 액세스하려고 하면 오류가 보고됩니다.
하위 클래스를 정의하면 하위 클래스는 상위 클래스의 공개 및 보호 메서드와 속성을 상속받습니다. 그러나 상위 클래스의 비공개 메서드의 경우 하위 클래스가 이를 상속할 수 없습니다. 이는 상속이 is-a 관계인 반면 private 메소드는 has-a 관계에 속하기 때문입니다.
예는 다음과 같습니다.
class ParentClass { private function privateMethod() { echo "This is a private method."; } protected function protectedMethod() { echo "This is a protected method."; } } class ChildClass extends ParentClass { // some code here } $childObj = new ChildClass(); $childObj->protectedMethod(); // This is a protected method. $childObj->privateMethod(); // Fatal error: Call to private method ParentClass::privateMethod() from context...
이 예에서는 비공개 메서드 privateMethod()와 보호 메서드 protectedMethod()가 포함된 ParentClass 클래스를 정의합니다. 또한 ParentClass 클래스를 상속하는 ChildClass 클래스를 정의합니다.
자식 클래스에서 보호 메소드인 protectedMethod()를 호출하면 잘 동작하는데, 상위 클래스의 프라이빗 메소드인 privateMethod()를 호출하려고 하면 치명적인 오류가 발생합니다.
그럼 하위 클래스에서 상위 클래스의 비공개 메서드에 어떻게 액세스하나요? 한 가지 방법은 부모 클래스의 공개 또는 보호 메서드를 사용하여 개인 메서드를 호출하는 것입니다.
예:
class ParentClass { private function privateMethod() { echo "This is a private method."; } protected function protectedMethod() { echo "This is a protected method."; $this->privateMethod(); // call private method } } class ChildClass extends ParentClass { public function publicMethod() { $this->protectedMethod(); // call protected method } } $childObj = new ChildClass(); $childObj->publicMethod(); // This is a protected method. This is a private method.
이 예에서는 부모 클래스의 보호 메서드에서 개인 메서드를 호출하고 자식 클래스에서 보호 메서드 protectedMethod()를 호출하는 공용 메서드 publicMethod()를 정의합니다. 하위 클래스의 publicMethod() 메서드를 호출하면 "This is a protected method. This is a private method."가 출력됩니다.
요약
PHP에서 프라이빗 메서드는 클래스 메서드 내에서만 액세스할 수 있습니다. 자식 클래스는 부모 클래스의 private 메서드를 상속받을 수 없지만 부모 클래스에 public 또는 protected 메서드를 포함시켜 해당 메서드에 액세스할 수 있습니다. 즉, 예기치 않은 오류를 방지하려면 상속할 때 부모 클래스의 비공개 메서드에 액세스하는 데 주의를 기울여야 합니다.
위 내용은 PHP 상위 클래스의 비공개 메소드에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!