訪問控制 - PHP面向對象編程(OOP)

    PHP 對屬性或方法的訪問控制,是通過在前面添加關鍵字 public(公有),protected(受保護)或 private(私有)來實現的。

    • public(公有):公有的類成員可以在任何地方被訪問。
    • protected(受保護):受保護的類成員則可以被其自身以及其子類和父類訪問。
    • private(私有):私有的類成員則只能被其定義所在的訪問。

    在子類中,可以對 public(公有)和protected(受保護)進行重定義,但private(私有)而不能

    屬性的訪問控制

    類屬性必須定義為公有,受保護,私有之一。

    如果用 var 定義,則被視為公有。

    <?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        public $public = 'Public';
        protected $protected = 'Protected';
        private $private = 'Private';
    
        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }
    
    $obj = new MyClass();
    echo $obj->public; // 這行能被正常執行
    echo $obj->protected; // 這行會產生一個致命錯誤
    echo $obj->private; // 這行也會產生一個致命錯誤
    $obj->printHello(); // 輸出 Public、Protected 和 Private
    
    
    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 可以對 public 和 protected 進行重定義,但 private 而不能
        protected $protected = 'Protected2';
    
        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }
    
    $obj2 = new MyClass2();
    echo $obj2->public; // 這行能被正常執行
    echo $obj2->private; // 未定義 private,私有的類成員則只能被其定義所在的類訪問
    echo $obj2->protected; // 這行會產生一個致命錯誤
    $obj2->printHello(); // 輸出 Public、Protected2 和 Undefined
    
    ?>

    注意,什么是類,什么是對象(類的實例)

    方法的訪問控制

    類中的方法可以被定義為公有,私有或受保護。

    如果沒有設置這些關鍵字,則該方法默認為公有。

    <?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        // 聲明一個公有的構造函數
        public function __construct() { }
    
        // 聲明一個公有的方法
        public function MyPublic() { }
    
        // 聲明一個受保護的方法
        protected function MyProtected() { }
    
        // 聲明一個私有的方法
        private function MyPrivate() { }
    
        // 此方法為公有
        function Foo()
        {
            $this->MyPublic();
            $this->MyProtected();
            $this->MyPrivate();
        }
    }
    
    $myclass = new MyClass;
    $myclass->MyPublic(); // 這行能被正常執行
    $myclass->MyProtected(); // 這行會產生一個致命錯誤
    $myclass->MyPrivate(); // 這行會產生一個致命錯誤
    $myclass->Foo(); // 公有,受保護,私有都可以執行
    
    
    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 此方法為公有
        function Foo2()
        {
            $this->MyPublic();
            $this->MyProtected();
            $this->MyPrivate(); // 這行會產生一個致命錯誤
        }
    }
    
    $myclass2 = new MyClass2;
    $myclass2->MyPublic(); // 這行能被正常執行
    $myclass2->Foo2(); // 公有的和受保護的都可執行,但私有的不行
    
    class Bar 
    {
        public function test() {
            $this->testPrivate();
            $this->testPublic();
        }
    
        public function testPublic() {
            echo "Bar::testPublicn";
        }
        
        private function testPrivate() {
            echo "Bar::testPrivaten";
        }
    }
    
    class Foo extends Bar 
    {
        public function testPublic() {
            echo "Foo::testPublicn";
        }
        
        private function testPrivate() {
            echo "Foo::testPrivaten";
        }
    }
    
    $myFoo = new foo();
    $myFoo->test(); // Bar::testPrivate 
                    // Foo::testPublic
    ?>

    參考文章

    php

    繼承與方法重寫 - PHP面向對象編程(OOP)

    2022-8-24 14:27:51

    php

    接口 - PHP面向對象編程(OOP)

    2022-8-24 16:29:34

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲日本一区二区一本一道| 日韩精品一区二区三区中文3d| 国产在线精品一区二区三区直播 | 波多野结衣中文字幕一区二区三区| 国产精品一区12p| 欧美日本精品一区二区三区 | 一本色道久久综合一区| 一区二区三区在线|欧| 岛国无码av不卡一区二区 | 精品无码人妻一区二区三区品| 熟女少妇丰满一区二区| 男人的天堂精品国产一区| 日本人的色道www免费一区| 中文字幕AV一区二区三区人妻少妇| 久久se精品动漫一区二区三区| 香蕉久久AⅤ一区二区三区| 日本精品一区二区三区在线视频一 | 人妻精品无码一区二区三区| 2022年亚洲午夜一区二区福利 | 无码中文字幕乱码一区| 国产99视频精品一区| 麻豆高清免费国产一区| 亚洲无圣光一区二区| 亚洲欧美国产国产一区二区三区 | 无码播放一区二区三区| 老熟妇仑乱视频一区二区 | 国产精品成人一区无码 | 国产一区视频在线| 无码少妇一区二区性色AV| 色欲综合一区二区三区| 亚洲一区二区三区播放在线 | 国产精品亚洲产品一区二区三区| 四虎永久在线精品免费一区二区| 一区二区手机视频| 国产av天堂一区二区三区| 人妻aⅴ无码一区二区三区| 亚洲综合一区二区三区四区五区| 中文字幕一区二区三区人妻少妇| 精品国产免费一区二区| 亚洲国产成人久久一区久久| 亚洲毛片αv无线播放一区|