標籤:error 秘密 this 並且 parent div des ror 構造
常用的繼承過程,以及對public、private、protected修飾符的理解:
/*****************************父類********************************//*** person父類*/class person { public $name; //共有屬性在類的裡面和外面都可以被訪問,可以被子類繼承 public $age; public $sex; protected $myprotect; //受保護屬性,不能被外部存取,只能在類裡面被訪問,以及繼承了本類的子類可以訪問 private $myprivate; //私人屬性,只能被本類的內部訪問,不能被外部存取,也不能被子類繼承訪問 public static $mystaticObj; //全域靜態變數,直接通過類方法訪問 /** * 構造方法 */ function __construct($name,$age,$sex) { $this->name = $name; $this->age = $age; $this->sex = $sex; $this->myprotect = "myprotect"; $this->myprivate = "myprivate"; } /** * 共有執行個體方法,可以被類的裡面和外面訪問,並且可以子類繼承重寫 */ public function personInfo() { echo "姓名:".$this->name."\n"."年齡:".$this->age."\n"."性別:".$this->sex."\n"."myprotect:".$this->myprotect."\n"."myprivate:".$this->myprivate; } /** * 私人執行個體方法,可以被類的裡面訪問,但不能被類的外面訪問,也不能被子類繼承訪問 */ private function mysecret() { echo "這是我的秘密,不能告訴你"; } /** * 受保護執行個體方法,可以被類的裡面訪問,也可以被子類訪問,但不能被類的外面訪問 */ protected function myprotectfun() { echo "這是我的myprotectfun方法"; } public static function share() { echo "靜態方法,直接通過類名調用"; } function __destruct() { echo "god damn,I die"; }}/*****************************子類********************************//*** 繼承自person的子類*/class student extends person{ public $grade; function __construct($name,$age,$sex,$grade) { parent::__construct($name,$age,$sex); $this->grade = $grade; } public function personInfo() { parent::personInfo(); echo "\n"."grade:".$this->grade."\n"; /* 結果: 姓名:klp 年齡:24 性別:male myprotect:myprotect myprivate:myprivate grade:six 這是我的子類myprotectfun方法 */ $this->myprotectfun(); } protected function myprotectfun() { echo "這是我的子類myprotectfun方法"; } public static function share() { echo "子類靜態方法,直接通過類名調用"; }}// $obj = new person("klp","26","male");// $obj->personInfo();// $obj->myprotect; 報錯:Fatal error: Cannot access protected property person::$myprotect// $obj->mysecret(); /*報錯:Fatal error: Call to private method person::mysecret() from context*/// person::share(); /*靜態方法,直接通過類名調用*/$stu = new student("klp","24","male","six");$stu->personInfo();$stu->myprivate; /*返回為空白,但是不會報錯*/student::share(); /*子類靜態方法,直接通過類名調用*/
php物件導向理解(一)