>백엔드 개발 >PHP 튜토리얼 >PHP 클래스의 캡슐화 및 상속 정보

PHP 클래스의 캡슐화 및 상속 정보

墨辰丷
墨辰丷원래의
2018-06-07 10:39:101189검색

이 글은 주로 PHP 클래스의 캡슐화와 상속에 대해 소개하고 있으니 관심 있는 분들이 참고하시면 좋을 것 같습니다.

Encapsulation

​​​​ 멤버 메서드와 멤버 속성을 클래스로 캡슐화하고, 속성 및 메서드 구현의 세부 정보를 숨기고, public, protected, private 등을 통해 클래스 멤버의 액세스 권한을 제한합니다. 데이터가 보호됩니다. 내부적으로 승인된 사람만이 접근이 가능하며, 멤버 방식만 동작 가능하며, 멤버는 최대한 캡슐화해야 한다.

public: 메서드 또는 속성은 모든 범위에서 액세스할 수 있으며 기본적으로 속성 또는 메서드에 대해 액세스 한정자가 지정되지 않으면 공개됩니다.
protected: 이 클래스와 하위 클래스에 액세스할 수 있지만 외부 개체를 호출할 수는 없습니다.
private: 이 클래스에서만 액세스할 수 있으며 하위 클래스나 외부 개체에서는 호출할 수 없습니다. 비공개로 표시된 메서드나 특성은 상속된 클래스에서 재정의될 수 있으며, 각 클래스는 자신이 정의한 비공개 메서드만 볼 수 있습니다.

          이 세 가지 수정자는 범위 측면에서 공개 → 보호 → 비공개로 정렬되어야 합니다. 이 캡슐화는 클래스가 일부 속성과 메서드를 캡슐화하기 때문입니다. "를 사용하여 클래스 외부에서 정의된 속성과 메서드를 마음대로 수정할 수 없고 호출만 할 수 있습니다. 이는 캡슐화의 이점이며 보안도 향상됩니다.
코드 예제를 제공합니다:

 class myClass{ 
  public $public="Public";    //public属性
  protected $protected="Protected"; //protected属性
  private $private="Private";   //private 属性
  function say_Hello() {    //public属性 
  //只是举例说明,自行添加内容
  } 
 
 $obj=new myClass(); 
 echo $obj->public; 
 //echo $obj->protected; 
 //echo $obj->private;

위 예제를 실행하면 "Public"이 표시되지만 //echo $obj->private; 주석을 제거하면 다음 오류가 발생합니다.

치명적인 오류: 13행의 E:apachehtdocsexamplefile.php에서 보호된 속성 myClass::$protected에 액세스할 수 없습니다.

우리는 클래스의 속성 정의에 마음대로 액세스할 수 없다는 것을 알 수 있습니다. 이 멤버는 다른 클래스에서 사용할 수 없기 때문에 이 클래스에 어떤 멤버가 있는지 "외부" 알 수 없습니다. 물론 "비공개"로 정의된 속성에 액세스하거나 수정해야 하는 경우 PHP에서 제공하는 시스템 메서드인 _get() 및 _set()을 사용할 수도 있습니다.

상속

클래스를 상속하고 다른 기존 클래스의 멤버 속성과 메서드를 가질 수 있습니다. 상속된 클래스를 상위 클래스 또는 기본 클래스라고 하며 상속된 클래스를 하위 클래스라고 합니다. 상속 관계는 확장 키워드를 통해 구현됩니다. 일반적으로 상속을 받으려면 "뿌리"가 있어야 합니다. 이 "뿌리"에 대해 미래에 아들이나 딸을 낳으면 어떤 "물건(속성 및 방법)"을 얻게 될 것이라고 상상할 수 있습니다. 따라서 귀하의 "후손"은 귀하(출처)의 특성 중 일부를 소유한 사람들입니다.

"루트" 클래스 생성(상위 클래스 또는 기본 클래스)구문: 클래스 아버지{
}

"하위 클래스" 생성(하위 클래스)구문: 클래스 아들이 아버지를 확장함{
}

PHP는 클래스 상속을 확장함 샘플 코드:

class father{ 
 protected $name; 
 function __construct($name){  //构造函数 
  $this->name=$name; 
 } 
 
 function work(){ 
  echo "{$this->name}我在工作;
 } 
 function __destruct(){}  //析构函数
} 
 
class son extends father{  //继承父类
 function play(){ 
  echo "{$this->name}我在玩游戏;
 }  
} 
 
 $my_father=new father(“爸爸”);  //创建父类对象
 $my_father->work(); 

 $my_son=new son(“儿子”); 
 $my_son->work(); 
 $my_son->play();

분석: 상위 클래스 father에서 일반 속성과 메서드를 정의한 다음 하위 클래스를 정의합니다. 하위 클래스는 상위 클래스의 모든 메소드를 상속하므로 $my_son->work();를 호출할 수 있으므로 하위 클래스에는 생성자와 소멸자가 없는 것을 알 수 있습니다. 이는 PHP 클래스의 상속입니다. 또한 참고: PHP는 클래스 A 확장 B 확장 C와 같은 다중 레벨 상속을 가질 수 없습니다. PHP에서는 다중 상속이 아닌 단일 상속만 유효합니다. 다중 상속을 "구현"하려면 다른 방법이 필요합니다. 변장해서.

요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장사항:

PHP가 숫자를 무작위로 생성하는 두 가지 방법

PHP는 당일 인스턴스 분석의 0시간 타임스탬프를 얻습니다.

PHP 데이터 내보내기 사례 분석

위 내용은 PHP 클래스의 캡슐화 및 상속 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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