<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 面向對象的三大特點 ![](https://box.kancloud.cn/441e34cbb7a5d3c8bfd5d2c6864f4fa6_677x340.png) 屬性必須指定修飾符,方法默認是public 函數之間可以互相調用,但需要用this指向 ## 封裝 姓名,性別公開,電話號碼,工資是隱私的。 訪問proteced,private的變量,使用下面**魔術方法**: __set(), __get(); ### 賦值操作: `__set($name,$value);` ### 獲取屬性的值 `__get($name);` ~~~ //set get無法單獨效驗,雖然方便,但無法個性化 class A{ private $n1; private $n2; //set管理所有私有屬性 public function __set($pro_name,$pro_val){ $this->pro_name=$pro_val; } //獲取所有屬性的值 public function __get($pro_name){ if(isset($pro_name)){ return $this->pro_name; }else{ return null; } } public function add($n1){ $this->n1=$n1; $this->n2=$n2; } } $aa=new A(); $aa->n1="dddd"; echo $aa->n1; ~~~ #### 1.查看 ~~~ <? echo "<meta charset='utf-8'>"; class Child{ public $name; protected $age; private $salary; function __construct($name,$age,$salary){ $this->name=$name; $this->age=$age; $this->salary=$salary; } //通過公開函數調用私有內容 function shows($username){ if($username=="111"){ echo $this->name."||".$this->age."||".$this->salary; }else{ echo "無權限查看"; } } //通過公開函數修改私有屬性 public function setage($age){ if($age>100){ echo "你的年齡范圍不對"; }else{ $this->age=$age; } } } $cc=new Child("田偉","18","888"); $cc->name="dsfsd"; echo $cc->name; echo $cc->setage(66); echo $cc->shows("111"); ~~~ #### 2.修改 $cc->name="田偉"; 寫修改方法 ## 繼承 繼承保證代碼的復用性 ![](https://box.kancloud.cn/85500de8f8037a67ef3f8f15898d8f56_520x335.png) ~~~ class stu{ public $name; public $age; public function showinfo(){ echo $this->name; } } class pupil extends stu{ public function testing(){ echo "小學生考試"; } } class graduate extends stu{ public function testing(){ echo "大學生考試"; } } ~~~ 注意點: 1. 子類只能繼承父類的public,protected ,不能繼承private 2. 一個子類只能繼承一個父類,但可以通過繼承2次達到效果。 3. 子類默認不會自動繼承父類的構造方法。 4.如果要調用發父類的構造方法或其他方法,可以通過 父類名::__construct(); parent::_construct(); ![](https://box.kancloud.cn/1524c665098a3f605398766212231418_428x469.png) ## 多態,重載 overload 一樣的函數名,但是參數個數不一樣,達到調用同一個函數名,但是可以區分不同的函數。 重載函數:__call(),官方并不推薦。 總結: 1.php5 默認情況下不直接支持方法重載 2.可以通過 __call()模擬方法重載效果 3.PHP5魔術常量 __LINE__ __FILE__ __FUNCTION__ 必須在函數里面 __CLASS__ 必須在類里面調用 __METHOD__ __DIR__ __NAMESPACE__ ## 方法重寫、覆蓋 override 父類知道每個子類都有某個方法,但父類不能確定子類方法的具體如何寫,這個時候子類就可以重寫覆蓋這個方法。 注意: **子類和父類的名稱,參數必須完全一樣**,參數名稱可以不一樣 覆蓋的時候,子類的修飾符訪問范圍不能低于父類的修飾符訪問權限。 子類覆蓋是在子類的區域內覆蓋,并不是修改了父類的程序。此時還是可以調用這個父類的方法 ~~~ class A{ public $name; function cry(){ echo "不知道怎么叫。。。"; } } class Dog extends A{ //覆蓋 function cry(){ echo "小狗旺旺叫。。"; parent::cry(); } } $dog1=new Dog(); $dog1->cry(); ~~~
                  <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>

                              哎呀哎呀视频在线观看