>  기사  >  백엔드 개발  >  PHP의 공개, 비공개 및 보호 속성의 정의, 사용법 및 차이점 예에 대한 자세한 설명

PHP의 공개, 비공개 및 보호 속성의 정의, 사용법 및 차이점 예에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-03 09:55:275842검색

public: 공용 특성 또는 메서드

는 self::var 또는 self::method를 통해 하위 클래스에서 호출할 수 있습니다. 상위 클래스의 메서드는 parent::method를 통해 호출할 수 있지만 공용 속성은 호출할 수 없습니다. 인스턴스

protected: Protected type

하위 클래스에서 self::var 또는 self::method를 통해 호출 가능, parent:: 메소드를 통해 호출 가능 상위 클래스의 메소드를 호출하려면

인스턴스에서 $obj->var는 보호 유형 메소드 또는 속성을 호출하는 데 사용할 수 없습니다


private: Private 유형

이 유형의 속성 또는 메소드는 이 클래스에서만 사용할 수 있습니다. . 이 클래스, 하위 클래스 또는 하위 클래스 인스턴스

2. self와 parent의 차이점a) 이 두 개체는 하위 클래스에서 일반적으로 사용됩니다. 주요 차이점은 self가 상위 클래스에서 공개 또는 보호 속성을 호출할 수 있지만 부모는

b).self를 호출할 수 없다는 점입니다.:: 현재 클래스의
static 멤버(메서드 및 속성)를 나타냅니다. ,$this는 현재 객체를 나타냅니다

<?php
class BaseClass {
  public $public = &#39;public&#39;;
  private $private = &#39;private&#39;;
  protected $protected = &#39;protected&#39;;
  function construct(){
  }
  function print_var(){
    print $this->public;echo &#39;<br />&#39;;
    print $this->private; echo &#39;<br />&#39;;
    print $this->protected; echo &#39;<br />&#39;;
  }
}

class Subclass extends BaseClass {
  // public $public = &#39;public2&#39;;
  protected $protected =&#39;protected2&#39;;
  function construct(){
    echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值
    echo &#39;<br />&#39;;
    echo $this->private;//error 因为是私有的只有在定义她的类baseclass中可以用
  }
}
  $obj1 = new BaseClass();
  $obj1->print_var();
  //echo $obj1->protected;//error 因为是受保护的,只有在本类内部或子类父类中可以调用
  //echo $obj1->private;//error 同上私有的,只有在本类内调用
  echo $obj1->public;
  echo "<hr />";
  $obj2 = new Subclass();
  echo &#39;<br />&#39;;
  echo $obj2->public;echo &#39;<br />&#39;;
  echo $obj2->protected;
  //echo $obj2->private;//error
  //echo $obj2->protected;//error
?>

요약

public은 전역을 의미하며 클래스 내부 및 외부의 하위 클래스에서 액세스할 수 있습니다. private은 비공개를 의미하며 이 클래스 내에서만 사용할 수 있습니다.

protected는 보호됨을 의미합니다. 이 클래스 또는 하위 클래스나 상위 클래스에서 액세스할 수 있습니다.

위 내용은 PHP의 공개, 비공개 및 보호 속성의 정의, 사용법 및 차이점 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.