PHP 하위 클래스에서 보호된 상위 클래스 변수에 액세스하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-10-23 00:44:03
원래의
286명이 탐색했습니다.

How to Access Protected Parent Class Variables in PHP Subclasses?

PHP에서 상위 클래스 변수에 액세스

객체 지향 프로그래밍에서 하위 클래스는 상위 클래스의 속성과 메서드를 상속합니다. 그러나 하위 클래스 내에서 상위 클래스 변수에 직접 액세스하면 문제가 발생할 수 있습니다.

클래스 B가 클래스 A를 확장하는 다음 코드 조각을 고려하세요.

<code class="php">class A {
    private $aa;
    protected $bb = 'parent bb';
    function __construct($arg) {}
    private function parentmethod($arg2) {}
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$bb; //Fatal error: Undefined class constant 'bb' 
    }
}

$test = new B($some);
$test->childfunction();</code>
로그인 후 복사

질문:

왜 이 줄은 echo parent::$bb; 치명적인 오류가 발생합니까? 하위 클래스의 상위 변수 $bb에 어떻게 액세스할 수 있나요?

답변:

$bb가 클래스 A의 protected 속성이고 protected이기 때문에 오류가 발생합니다. 속성은 parent:: 구문을 사용하여 클래스 또는 하위 클래스 외부에서 직접 액세스할 수 없습니다. 대신 다음 구문을 사용하여 $bb에 액세스할 수 있습니다.

<code class="php">echo $this->bb;</code>
로그인 후 복사

설명:

$this 키워드는 현재 개체를 참조합니다. $bb는 클래스 B에 의해 상속되어 현재 객체의 일부가 되므로 $this를 사용하여 액세스할 수 있습니다. 이 구문은 상속된 변수가 하위 클래스의 속성인 것처럼 효과적으로 액세스합니다.

parent::

parent:: 구문은 다음과 같이 사용됩니다. 하위 클래스 내에서 상위 클래스의 메서드나 속성에 액세스합니다. 일반적으로 상위 클래스의 메서드를 재정의하거나 여기에 추가 기능을 추가하려는 경우에 사용됩니다.

예를 들어 다음 코드를 고려하세요.

<code class="php">class Airplane {
    private $pilot;
    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}

class Bomber extends Airplane {
    private $navigator;
    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;
        parent::__construct( $pilot ); // Calls the parent constructor
    }
}</code>
로그인 후 복사

이 경우 Bomber 클래스의 __construct() 메서드는 부모의 __construct() 메서드를 재정의하지만 여전히 이를 사용하여 파일럿 속성을 초기화합니다.

위 내용은 PHP 하위 클래스에서 보호된 상위 클래스 변수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!