PHP 物件導向 (一)許可權修飾符

一句話兒發表於2020-01-18

作用:控制訪問許可權,修飾屬性,方法

許可權控制符:public(公開的) protected(受保護的) private(私有的)

區別:

  1. public 類內,類外,可以訪問
  2. protected 類內,子類的類內,可以訪問
  3. private 只有當前類的類內,可以訪問

關於繼承:

  1. 子類可以繼承父類私有屬性,不能繼承私有方法
  2. 子類繼承自父類的屬性方法,子類必須和父類的修飾相同,或者更鬆弛。
    1. 父類為public,則子類必須為public。
    2. 父類為protected,子類需為public 或 protected。
    3. 父類為private,則子類可為public protected private

編寫父類Father 和 子類Son

<?php
    class Father{
        public $name;
        protected $salary;
        private $money; //私房錢

        public function __construct($name, $salary, $money)
        {
            $this->name = $name;
            $this->salary = $salary;
            $this->money = $money;
        }

        public function getName()
        {
            return $this->name;
        }

        protected function getSalary()
        {
            return $this->salary;
        }

        private function getMoney()
        {
            return $this->salary;
        }

        public function getInfo()
        {
            // 所有屬性在方法內都能訪問
            echo $this->name . "的薪水一個月" . $this->salary;
            echo "存款" . $this->money;
            echo "<br/>";
        }
    }

    class Son extends Father
    {
        //private $salary; //控制許可權必須必父類更鬆弛,可以宣告為protected 和 public
        private $age;
        public function getFatherInfo()
        {
            //子類不能呼叫父類的屬性,可以呼叫父類的方法獲取屬性
            parent::getName();
            parent::getSalary();
            //parent::getMoney(); //子類不能呼叫父類私有方法
            //$this->getMoney(); //子類不能繼承父類私有方法,私有屬性可以繼承(透過訪問繼承的公開方法,即可訪問到私有屬性)
        }
    }

//父類
$father1 = new Father('father1', 5000, 100000);
//類內public protected private屬性都可以訪問
$father1->getInfo();
//類外只能訪問 public
echo $father1->name;
//    echo $father1->salary; //受保護屬性類外不能訪問
//    echo $father1->money; //私有屬性類外不能訪問

//子類繼承父類
$son1 = new Son('son1', 2000, 0);
//類內public protected private屬性都可以訪問
$son1->getInfo();
//類外只能訪問 public
echo $son1->name;
//    echo $son1->salary; //受保護屬性類外不能訪問
//    echo $son1->money; //私有屬性類外不能訪問

複製程式碼,即可執行。 謝謝你的瀏覽,如有錯誤,歡迎指正哈!!!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
寫的不好,就當是整理下思緒吧。

相關文章