PHP 抽象類


* 抽象類 * 1.使用關鍵字: abstract

* 2.類中只要有一個方法聲明為abstract抽象方法,那么這個類就必須聲明為抽象類 * 3.抽象方法只允許有方法聲明與參數列表,不允許有方法體; * 4.因為抽象方法的不確定性,所以抽象類禁止實例化,僅允許通過繼承來實例化; * 5.繼承抽象類的子類中,必須將抽象類中的所有抽象方法全部實現 * 6.子類成員的訪問限制級別必須等於或小於抽象類的約定,例如抽象類是protected,子類必須是 * protected 或者 public 不允許是private * 7.子類方法參數必須與抽象類方法參數完全一致,但允許增加默認參數 * 特別注意 * 1. 盡管抽象類不能實例化,但仍然可以為它創建構造器,但必須聲明為final * 2. 抽象類理論上說不應該擁有靜態成員,部分編輯器會有E_STRICT2048提示,但仍然可以這樣做
abstract class Fruits
{
    //水果名稱
    protected $name;

    //聲明靜態屬性,因為要用到靜態類中
//    protected static $name;

    //抽象方法
    abstract public  function eat();

    //靜態抽象方法
//    abstract static public  function eat();

    //盡管不能直接實例化抽象類,但仍然可以有構造方法
    public function __construct()
    {
        return '抽象類構造器,實例化時自動調用<br>';
    }  

}
//實際開發中應該為每一個類創建獨立的類文件
class Apple extends Fruits
{
    protected $name = '蘋果';

    //聲明為靜態屬性
//    public static $name = '蘋果';

    public  function eat()
    {
        return $this->name.'可以直接生吃';
    }

    //子類構造方法
    public function __construct()
    {
        echo parent::__construct();
    }

    //實現抽象類中的抽象靜態方法eat()
//    public static function eat()
//    {
//        return self::$name.'可以直接生吃';
//    }
}

$apple = new Apple;
echo $apple->eat();
//此前是抽象靜態類,不需要例化,可以用類直接訪問
//echo Apple::eat();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM