클래스는 객체 지향에서 중요한 개념이며, 캡슐화와 상속은 객체 지향의 중요한 기능입니다. 이 글에서는 캡슐화와 상속의 두 가지 특성에 초점을 맞추고 참고할 수 있는 몇 가지 예를 제시합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!