> 백엔드 개발 > PHP 튜토리얼 > PHP class_php 기술의 캡슐화 및 상속에 대한 자세한 설명

PHP class_php 기술의 캡슐화 및 상속에 대한 자세한 설명

WBOY
풀어 주다: 2016-05-16 20:07:01
원래의
1140명이 탐색했습니다.

캡슐화

멤버 메소드와 멤버 속성을 클래스로 캡슐화하고, 속성 및 메소드 구현의 세부사항을 숨기고, 클래스 멤버의 액세스 권한을 public, protected, private 등으로 제한합니다. 데이터는 내부적으로 보호되며 승인된 사용자를 통해서만 액세스할 수 있습니다. 멤버 메소드를 최대한 많이 조작하고 캡슐화하는 것이 가능합니다.

공개: 메서드 또는 속성은 모든 범위에서 액세스할 수 있으며 기본적으로 속성 또는 메서드에 대해 액세스 한정자가 지정되지 않으면 공개됩니다.
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.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿