public: Public 유형
하위 클래스에서는 self::var, parent::method를 통해 public 메서드 또는 property를 호출하여 상위 클래스 메서드를 호출할 수 있습니다
인스턴스에서는 $obj를 통해 public을 호출할 수 있습니다. ->var 유형 메서드 또는 속성
protected: 보호된 유형
하위 클래스에서 보호된 메서드 또는 속성은 self::var를 통해 호출할 수 있으며 parent::method는 상위 클래스 메서드를 호출합니다.
인스턴스에서는 $obj- >는 사용할 수 없습니다. var는 보호 유형 메서드 또는 속성을 호출하는 데
private: 개인 유형
이 유형의 속성 또는 메서드는 이 클래스, 이 클래스의 인스턴스, 하위 클래스 및 하위 클래스의 인스턴스에서만 사용할 수 있습니다. 개인 유형의 속성과 메서드는 호출할 수 없습니다
2. self와 parent의 차이점
a) 이 두 개체는 하위 클래스에서 일반적으로 사용됩니다. 주요 차이점은 self가 상위 클래스에서 공개 또는 보호 속성을 호출할 수 있지만 부모는
static 멤버(메서드 및 속성)를 호출할 수 없다는 것입니다. ,$this는 현재 개체를 나타냅니다.
코드는 다음과 같습니다.<?php /** * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性 * self 可以调用父类中除私有类型的方法和属性外的所有数据 */ class User{ public $name; private $passwd; protected $email; public function construct(){ //print CLASS." "; $this->name= 'simple'; $this->passwd='123456'; $this->email = 'bjbs_270@163.com'; } public function show(){ print "good "; } public function inUserClassPublic() { print CLASS.'::'.FUNCTION." "; } protected function inUserClassProtected(){ print CLASS.'::'.FUNCTION." "; } private function inUserClassPrivate(){ print CLASS.'::'.FUNCTION." "; } } class simpleUser extends User { public function construct(){ //print CLASS." "; parent::construct(); } public function show(){ print $this->name."//public "; print $this->passwd."//private "; print $this->email."//protected "; } public function inSimpleUserClassPublic() { print CLASS.'::'.FUNCTION." "; } protected function inSimpleUserClassProtected(){ print CLASS.'::'.FUNCTION." "; } private function inSimpleUserClassPrivate() { print CLASS.'::'.FUNCTION." "; } } class adminUser extends simpleUser { protected $admin_user; public function construct(){ //print CLASS." "; parent::construct(); } public function inAdminUserClassPublic(){ print CLASS.'::'.FUNCTION." "; } protected function inAdminUserClassProtected(){ print CLASS.'::'.FUNCTION." "; } private function inAdminUserClassPrivate(){ print CLASS.'::'.FUNCTION." "; } } class administrator extends adminUser { public function construct(){ parent::construct(); } } /** * 在类的实例中 只有公有属性和方法才可以通过实例化来调用 */ $s = new administrator(); print '-------------------'; $s->show(); ?>
위 내용은 PHP의 세 가지 액세스 제어 모드 간의 차이점에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!