- 了解介面與抽象類別的概念
- 實作介面與抽象類別的方法
介面概念與使用方法
- 介面(interface)
- 作用:
- 定義相同的功能名稱,但可以由執行的類別,各自實作功能!
- 有實作介面的類別,一定要實作內容!
- 介面可以繼承其他的介面!
- 類別可以同時執行多個介面!
- 例:Bark.php (吠叫...)
<?php interface Bark{ public function bark(); } ?>
- 例:Swim.php (游泳...)
<?php interface Swim{ public function swim(); } ?>
- 例:Human.php (建一個人類的類別...)
<?php include "Bark.php"; include "Swim.php"; class Human implements Bark, Swim{ public function bark(){ echo "人類叫聲...是在叫什麼啦!!"; } public function swim(){ echo "人類在游泳...不是在洗澡嗎?"; } } ?>
- 利用一個 demo3.php 來實現上述幾個程式:
<?php include "Human.php"; $man = new Human(); echo $man->bark(); echo $man->swim(); ?>
- 作用:
- 抽象類別 (Abstract)
- 作用
- 父類別在使用介面之後,必須要實作該介面功能內容!
- 子類別在繼承父類別之後,如想要改變介面功能內容,必須使用覆寫的方式!
- 父類別若不想實作介面方法,子類別又需要定義介面功能,可以將父類別抽象化,即可不用實作介面方法!
- 子類別繼承抽象父類別之後,必須要實作父類別的介面方法!
- 範例 : 修改 dog.php
<?php include "Bark.php"; abstract class dog implements Bark { // 設定狗的屬性 public $name; public $color; public $style; //設定建構子 public function __construct($name,$color,$style){ $this->name = $name; $this->color = $color; $this->style = $style; } public function dogRun(){ echo "狗狗跑步中..."; } // 修改狗叫的功能 public function Bark(){ //這裡保持空白 } public function __destruct(){ echo "狗狗回家了..."; } } ?>
- 範例 : 修改 Poodle.php
<?php include "dog.php"; class Poodle extends dog{ protected $size; public function __construct($name,$color,$style,$size){ parent::__construct($name,$color,$style); $this->size = $size; } // 實作父類別的狗叫 function public function Bark(){ echo "狗叫...但小聲...."; //呼叫父類別的 dogBark() } } ?>
- 利用 demo2.php 來使用上述程式:
<?php include "Poodle.php"; $mydog = new Poodle("Windy","白色","貴賓狗",30); //修改此行 echo $mydog->Bark(); ?>
- 作用
本章練習:
- 修改 dog.php 檔案,使用 Bark.php 介面程式
- 修改 cat.php 檔案,將 cat 類別抽象化,並且使用 Bark.php 介面程式