PHP对象基础
阅读原文时间:2023年07月11日阅读:4

class demo1 {
public function test1(){
echo '这是一个公有方法,可以随意调用!'
}
protected function test2(){
$this->test1();//在类中调用自身的方法
echo '这是一个受保护的方法,只能被自己或其子类或父类调用或覆盖'
}
private function test3(){

    echo '这是一个私有的方法,只能被自身所在的类调用'  
}  
final public function test4(){  
    echo '如果父类的方法被声明为final,则子类无法覆盖该方法。如果一个类被生命为final,则不能被继承'  
}  
static public function test5(){  
    echo '这是一个静态公有的方法,可以不实例化类而直接调用';  
}  
public $prop1 = '这是一个公有的属性,可以随意调用或覆盖!';  
protected $prop2 = '这是一个受保护的属性,只能被自身或父类、子类调用或覆盖!';  
private $prop3 = '这是一个私有的属性,只能够自身调用!';  
static public $prop4 = '这是一个静态公有的属性,可以不实例化类而直接调用,静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。静态属性不可以由对象通过 -> 操作符来访问。';

}
demo1::test5();//静态方法,可以不实例化而直接调用
demo1::$prop4;//调用静态属性
$shuchu = new demo1;
$shuchu->test1();
$shuchu->test2();//这一行会产生致命错误,因为他们是私有的或者受保护的,不能被外部调用
$shuchu->test3();//这一行会产生致命错误,因为他们是私有的或者受保护的,不能被外部调用
$shuchu->test4();
$shuchu->$prop1;//调用属性
class demo2 extends demo {
protected function test6(){
parent::test1();//始终是调用父类的公有方法
parent::test2();//始终是调用父类受保护的方法
$this->test1();//如果子类中有自己的方法,则调用自己的,如果没有,调用父类的
parent::$prop1;//调用父类的方法
$this->$prop1;//调用父类的属性
}
public function test7(){
$this->test6();
}
}
$shuchu2 = new demo2;
$shuchu2->test7();