캡슐화
멤버 메소드와 멤버 속성을 클래스로 캡슐화하고, 속성 및 메소드 구현의 세부사항을 숨기고, 클래스 멤버의 액세스 권한을 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 클래스의 캡슐화 및 상속에 대한 학습 내용이므로 모든 분들의 학습에 도움이 되기를 바랍니다.