공개: 공개 유형
하위 클래스에서는 self::var를 통해 공용 유형 메서드나 속성을 호출할 수 있으며 parent::method를 통해 상위 클래스의 메서드를 호출할 수 있습니다.
어떤 경우에는 $obj->var
을 통해 공용 유형 메서드나 속성을 호출할 수 있습니다.
보호: 보호 유형
하위 클래스에서는 self::var를 사용하여 보호 유형 메서드나 속성을 호출할 수 있으며 parent::method를 사용하여 상위 클래스의 메서드를 호출할 수 있습니다
인스턴스의 $obj->var를 통해 보호 유형의 메서드나 속성을 호출할 수 없습니다
비공개: 비공개 유형
이 유형의 속성 또는 메소드는 이 클래스에서만 사용할 수 있습니다. 전용 유형 속성 및 메소드는 이 클래스의 인스턴스, 하위 클래스 또는 하위 클래스의 인스턴스에서 호출할 수 없습니다.
2.나와 부모의 차이
a) 이 두 개체는 일반적으로 하위 클래스에서 사용됩니다. 이들 사이의 주요 차이점은 self는 부모 클래스에서 공개 또는 보호 속성을 호출할 수 있지만 부모는 을 호출할 수 없다는 것입니다.
첨부코드:
<?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(); ?>