1. 程式人生 > >php面向對象理解(一)

php面向對象理解(一)

構造方法 nds nbsp his ade 也不能 func 私有屬性 rom

常用的繼承過程,以及對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面向對象理解(一)