KT客棧

Web程式交流 & 聊幹畫 / 心情手札

【PHP】7物件導向-7.3 成員的存取範圍

*PHP  7物件導向-7.3
7物件導向-7.3 成員的存取範圍
本篇會透過設定2個屬性、4個方法(成員)來完成一個水果的總價格和平均價格。
*定義成員的前綴關鍵字(public、private、protected、final):
以下關鍵字不同之處
|--public : 定義的方法範圍是公用的,即在任何一處都能相互的呼叫或存入。

|--private : 定義的方法範圍是私用的,子類別"無法繼承",即只能在該類別進行呼叫或存入

|--protected : 定義的方法範圍是受保護的,會讓子類別"無法繼承",但可以在子類別方法調用。子類別可以用protected定義的成員。

|--final : 會讓子類別"無法繼承和覆蓋"。

補充:關於下面範例會看到的$this,其實就是個虛擬變數,會在後方加入運算子"->"來指定您要用的屬性,而被指定的屬性不必在加上"$"。
ex.$this->ktblog


1.定義兩個私用屬性$average、$total(平均價格、總價)
2.定義四個方法(加總金額、平均金額、設定金額、秀出金額)
設定金額的方法,需要傳入參數指定為類別的屬性值,故前綴需用public。而秀出金額的方法主要是提供外部呼叫,所以前綴需用public。
3.最後是建立物件,呼叫物件中的方法,將屬性值秀出


範例如下
底下的範例中,<?php $object->show(); ?>我把它放入到table標籤內,最後呈現出來的結果會是像這樣:

    <?php
    class fruit{
      //public(公用) 任何一處都能相互的呼叫或存入
      //private(私用) 只能在類別裡面,相互的呼叫或存入
      //宣告"總額、平均"的屬性,存取範圍定性在private
      private $total;
      private $average;

      //水果的總金額
      private function totalmoney(){
        return $this->apple + $this->banana + $this->orange;
      }

      //水果的平均金額
      private function averagemoney(){
        return round($this->total/3);
      }

      //設定水果的金額
      public function setprice($kapple,$kbanana,$korange){
        $this->apple = $kapple;
        $this->banana = $kbanana;
        $this->orange = $korange;
        $this->total = $this->totalmoney(); //指定總金額的方法存入於 $this->total
        $this->average = $this->averagemoney(); //指定平均金額的方法存入於 $this->average
      }

      public function show(){
        echo "蘋果價格=".$this->apple."<br/>";
        echo "香蕉價格=".$this->banana."<br/>";
        echo "橘子價格=".$this->orange."<br/>";

        echo "總價格=".$this->total."<br/>";
        echo "平均價格=".$this->average."<br/>";
      }
    }
      $object = new fruit();
      $object->setprice("100","200","150");
    ?>

    <table border="3">
      <tr>
        <td><?php $object->show(); ?></td>
      </tr>
    </table>





沒有留言:

張貼留言

@templatesyard