>백엔드 개발 >PHP 튜토리얼 >PHP 클래스 캡슐화 및 상속 사용법에 대한 자세한 설명

PHP 클래스 캡슐화 및 상속 사용법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-30 09:09:231397검색

클래스는 객체 지향에서 중요한 개념이며, 캡슐화와 상속은 객체 지향의 중요한 기능입니다. 이 글에서는 캡슐화와 상속의 두 가지 특성에 초점을 맞추고 참고할 수 있는 몇 가지 예를 제시합니다.

Encapsulation

                   멤버 메소드 및 멤버 속성을 클래스로 캡슐화하고, 속성 및 메소드 구현의 세부정보를 숨기고, 공개, 보호, 비공개 등을 통해 클래스 멤버의 액세스 권한을 제한하고, 데이터 내부적으로는 승인된 멤버 방식을 통해서만 작업이 가능하며, 멤버는 최대한 캡슐화되어 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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