<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                在PHP5以前的bai版本中,構du造函數的名稱必須與類名相同 PHP5以及之后的版本,構造函數用__construct()方法來聲明 為了向下兼容,如果一個類中沒有名為__construct( )的方法,PHP將搜索一個與類名相同名的構造方法。 如果__construct( )的方法、與類名相同名的構造方法同時存在的話,優先使用__construct( )的方法。 ``` <?php //在類的外部無法直接獲取非共有屬性(即私有和受保護的)即只有public的屬性才能在類的外部$p->共有屬性名 class Person { public $name = '蒼蒼'; // 公共屬性 protected $age = 28; // 受保護的屬性 類外無法直接調用 private $sanwei = '91-58-89'; // 私有的屬性 類外無法直接調用 //靜態變量 static public $num = 0; //常量 無$直接以大寫字母開頭,且一單定義無法修改 const NUM = 0; public function getNum(){ self::$num++; //類內部調用靜態屬性 echo self::$num; } } // 實例化類 $p = new Person; // 類外部調用公共屬性 echo $p->name; // 類外部調用靜態屬性 echo Person::$num; // 類外部調用類常量 echo Person::NUM; // 類外調用受保護的屬性 // echo $p->age; // Fatal error: Cannot access protected property Person::$age不能訪問受保護的屬性 // 類外調用私有的屬性 echo $p->sanwei; // Fatal error: Cannot access private property Person::$sanwei 不能訪問私有的屬性 //在類的內部任意獲取非共有屬性(即私有和受保護的) //在類外實例化調用非公有屬性,需要一個共有的方法包裝在該方法里用$this->屬性名獲取非公有屬性,然后在通過調用該共有方法輸出非公有屬性和方法 class Person { public $name = '柳巖'; protected $age = 32; private $sanwei = '83-61-89'; // 定義方法 public function say() { // 訪問公有和非公有屬性 echo "{$this->name}姐姐說:她今年{$this->age}歲,她的傲人的三圍是{$this->sanwei}"; } } // 實例化Person類 $p = new Person; // 調用方法 $p->say(); class Person { // 公有方法 public function demo1() { echo '共有方法 <br>'; } protected function demo2() { echo '受保護的非公有方法 <br>'; } private function demo3() { echo '私有的非公有方法 <br>'; } public function demo4() { if($state=='vip'){ // 調用受保護的方法和私有方法 $this->demo2(); $this->demo3(); }else{ echo'沒有權限'; } } } // 實例化Person類 $p = new Person; $p->demo1();//輸出 公有方法 // 外部獲取受保護的方法 //$p->demo2(); //Fatal error: Call to protected method 不能在類外獲取受保護的方法 // 外部獲取私有的方法 //$p->demo3(); //Fatal error: Call to private method Person::demo3() 不能再類外調用私有的方法 $state='vip';//設置 $p->demo4(); //輸出:受保護的非公有方法 私有的非公有方法 //子類重寫父類0: class Person { public $name; public $age; public $sex; public function __construct($name, $age, $sex) { $this->name = $name; $this->age = $age; $this->sex = $sex; } public function demo() { echo 'hello world+++<br>'; } } class Girl extends Person { public $hair = '100cm'; public function demo() { echo '旭旭的妝好美<br>'; } // 子類和父類中的構造方法有公共的地方 public function __construct($name, $age, $sex, $hair) { /* $this->name = $name; $this->age = $age; $this->sex = $sex; */ // 通過parent調用父類的方法 parent::__construct($name, $age, $sex); // 子類新添加的值 $this->hair = $hair; // 調用父類的demo()方法 parent::demo();//hello world+++ // 調用自身的方法 $this->demo();//旭旭的妝好美 } } // 當類被實例化的時候,進行初始化賦值 // $p = new Person('靜靜', 30, '歐巴'); $g = new Girl('旭旭', 20, '靚女', '100cm'); var_dump($g);//object(Girl)#1 (4) { ["hair"]=> string(5) "100cm" ["name"]=> string(6) "旭旭" ["age"]=> int(20) ["sex"]=> string(6) "靚女" } $g->demo();//旭旭的妝好美 //輸出:hello world+++ //旭旭的妝好美 //object(Girl)#1 (4) { ["hair"]=> string(5) "100cm" ["name"]=> string(6) "旭旭" ["age"]=> int(20) ["sex"]=> string(6) "靚女" } 旭旭的妝好美 //子類重寫父類1: //父類 class Person{ public $name; public $age; public $sex; public function __construct($mingzi='', $nianling=null, $xingbie='男'){ $this->name=$mingzi; $this->age=$nianling; $this->sex=$xingbie; } public function fulei(){ echo'父類的共有方法'; } } //子類 class son extends person{ public $size=21; //總結:子類覆蓋重寫父類其實就是在函數的基礎上添加更多的參數 public $a='a'; public function __construct($mingzi='', $nianling=null, $xingbie='女'){ parent::__construct($mingzi, $nianling, $xingbie);//這段代碼的作用是減輕重復代碼的量父類中只定義了三個參數如果定義了成百上千呢在子類覆蓋是全部寫上就有點麻煩了這時我們就可以用這個代碼就全部重寫覆蓋父類的代碼了 } } $instance_person=new person('lichihua','26','男');//實例化父類 var_dump($instance_person);echo'<br>'; $instance_son=new son('aaa', 'bbb', 'cc');//實例化子類 var_dump($instance_son); //子類重寫父類2: class parent{ public function demo($a){ } } class son extends parent { public function demo($b){ } } //總結得出重寫的屬性和方法的名必須一樣如demo方法如果demo是私有的那么子類也必須是私有的;但是參數可以隨便沒有限制如$a和子類的$b; class parent{ | class parent{ public function demo($a){ | producted function demo($a,$c=''){ } | } } | } class son extends parent { | class son extends parent { public function demo($b,$c=null){ | producted function demo($b,$e=null){ } | } } | } | //總結得出 子類的參數的個數必須≥(大于等于)父類的參數個數,但是子類多余出來的參數必須有默認值;并且默認參數的值不同也是可以的; class foo { public function test(stdClass $a, array $z){ } } class bar extends foo { public function test(stdClass $b, array $c){ } } //總結得出 php是弱類型語言所以重寫父類方法只涉及對象類型和數組類型 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看