繼承與方法重寫(xiě) - PHP面向?qū)ο缶幊蹋∣OP)

    類中常用操作,很重要

    PHP 使用關(guān)鍵字?extends?來(lái)繼承一個(gè)類,PHP 不支持多繼承,格式如下:

    Child繼承Parent的類

    class Child extends Parent {
       // 代碼部分
    }

    實(shí)例

    實(shí)例中 Child_Site 類繼承了 Site 類,并擴(kuò)展了功能:

    <?php 
    // 子類擴(kuò)展站點(diǎn)類別
    class Child_Site extends Site {
       var $category;
    
    ????function setCate($par){
    ????????$this->category = $par;
    ????}
      
    ????function getCate(){
    ????????echo $this->category . PHP_EOL;
    ????}
    }

    方法重寫(xiě)

    如果從父類繼承的方法不能滿足子類的需求,可以對(duì)其進(jìn)行改寫(xiě),這個(gè)過(guò)程叫方法的覆蓋(override),也稱為方法的重寫(xiě)。

    重寫(xiě)前site類中的方法

     function getUrl(){
         echo $this->url . PHP_EOL;
      }
      
      
      function getTitle(){
         echo $this->title . PHP_EOL;
      }

    實(shí)例中重寫(xiě)了Child_Site類中, getUrl getTitle 方法:

    function getUrl() {
       echo $this->url . PHP_EOL;
       return $this->url;
    }
       
    function getTitle(){
       echo $this->title . PHP_EOL;
       return $this->title;
    }

    子類繼承父類的屬性和方法

    子類繼承父類的屬性和方法,也就是說(shuō)子類擁有父類所有的東西,包括 public(公有)、protected(保護(hù))和private(私有)的。

    但是父類私有的屬性和方法不能讓子類直接調(diào)用,并不是說(shuō)沒(méi)有繼承過(guò)來(lái),而是繼承過(guò)來(lái)了,但是要調(diào)用父類的私有屬性和方法的話還是需要通過(guò)父類的 public、protected 方法調(diào)用。

    <?php
    
    class father {
    
        public function __construct(){
            echo "父類構(gòu)造函數(shù),如果子類沒(méi)有重寫(xiě)構(gòu)造函數(shù)將會(huì)調(diào)用這里。如果子類重寫(xiě)了構(gòu)造函數(shù)則子類不用自動(dòng)調(diào)用這個(gè)函數(shù),而需要顯示調(diào)用父類構(gòu)造函數(shù)。";
        }
    
        public $m_fa="fa";    //公有
        protected $m_fb="fb";//受保護(hù)
        private $m_fc="fc";  //私有
    
        public function getFa(){ echo $m_fa;}
        protected function getFb(){return $m_fb;}
        private function getFc(){return $m_fc;}
        public function getFaPrivate_1(){return $m_fc;}
        public function getFaPrivate_2(){return $m_fc;}
    
        public function getAll(){
            echo $this->m_fa, $this->m_fb, $this->m_fc;//此行代碼打印fafbfc
            echo  $this->getFa(), $this->getFb(), $this->getFc();
        }
    
    }
    
    class son extends father{
        public function __construct(){
            parent::__construct(); //顯示調(diào)用父類構(gòu)造函數(shù)。
            echo "子類構(gòu)造函數(shù)調(diào)用";
        }
    }
    
    $class_fa = 'father';
    $class_son = 'son';
    $fa = new $class_fa();//父類 - father類的實(shí)例化
    $fa->getAll();
    $son = new $class_son();//子類 - son類的實(shí)例化
    $son->getFa();
    // 執(zhí)行以下方法會(huì)報(bào)錯(cuò),protected 無(wú)法在類外面進(jìn)行調(diào)用的
    // 報(bào)錯(cuò)信息:Fatal error: Uncaught Error: Call to protected method father::getFb()...
    // $son->getFb();
    // 執(zhí)行以下方法會(huì)報(bào)錯(cuò),private 無(wú)法被繼承,也無(wú)法在類外面進(jìn)行調(diào)用的
    // 報(bào)錯(cuò)信息:Fatal error: Uncaught Error: Call to private method father::getFc()...
    // $son->getFc();
    
    $son->getFaPrivate_2();//私有類成員只能被其定義所在類中訪問(wèn)
    ?>

    子類繼承父類構(gòu)造方法

    繼承與方法重寫(xiě) - PHP面向?qū)ο缶幊蹋∣OP)-Npcink
    繼承與方法重寫(xiě) - PHP面向?qū)ο缶幊蹋∣OP)-Npcink

    調(diào)用父類構(gòu)造方法 - PHP面向?qū)ο缶幊蹋∣OP)

    子類繼承帶有參數(shù)的父類的構(gòu)造方法:

    class students{
        var $name,$age,$sex;
        function __construct($name,$age,$sex){
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
        }
    }
    
    class master extends students{
        var $hobby,$address;
        function __construct($name, $age, $sex,$hobby,$address){
            parent::__construct($name, $age, $sex);
            $this->hobby = $hobby;
            $this->address = $address;
        }
    }

    參考文章

    php

    構(gòu)造函數(shù)與析構(gòu)函數(shù) - PHP面向?qū)ο缶幊蹋∣OP)

    2022-8-24 14:19:54

    php

    訪問(wèn)控制 - PHP面向?qū)ο缶幊蹋∣OP)

    2022-8-24 15:19:53

    ??
    Npcink上的部份代碼及教程來(lái)源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無(wú)意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    0 條回復(fù) A文章作者 M管理員
      暫無(wú)討論,說(shuō)說(shuō)你的看法吧
    ?
    個(gè)人中心
    購(gòu)物車(chē)
    優(yōu)惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 无码人妻精品一区二区三| 精品成人一区二区三区免费视频| 国产福利微拍精品一区二区| 国产综合视频在线观看一区| 久久99国产精品一区二区| 无码人妻久久一区二区三区蜜桃 | 精品国产一区二区22| 波多野结衣一区二区三区| 韩日午夜在线资源一区二区| 精品国产一区二区三区香蕉事 | 性色AV一区二区三区无码| 无码人妻一区二区三区在线 | 一本大道在线无码一区| 国产麻豆精品一区二区三区v视界| 色系一区二区三区四区五区 | 成人区人妻精品一区二区三区| 国产成人无码一区二区三区在线| 日本夜爽爽一区二区三区| 免费高清在线影片一区| 欧美人妻一区黄a片| 色狠狠色狠狠综合一区| 精品一区二区三区在线观看视频| 国产亚洲一区二区三区在线| 亚洲福利精品一区二区三区| 国产一区二区在线观看麻豆| 在线精品日韩一区二区三区| 国产av一区最新精品| 怡红院AV一区二区三区| 日韩久久精品一区二区三区| 国产成人一区二区在线不卡| 精品一区二区91| 国产精品男男视频一区二区三区| 亚洲欧洲一区二区三区| 成人免费av一区二区三区| 国内精品无码一区二区三区| 成人免费区一区二区三区| 国产成人一区二区三区视频免费| 人妻无码一区二区三区免费| 日本在线视频一区二区| 日韩在线观看一区二区三区| 一区二区三区观看|