首頁 > 後端開發 > php教程 > php中的抽象類別

php中的抽象類別

无忌哥哥
發布: 2023-04-01 21:10:02
原創
1455 人瀏覽過

* 抽象類別

 * 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 &#39;抽象类构造器,实例化时自动调用<br>&#39;;
    }
    
}
登入後複製

//為了教學方便,將抽象類與它的子類別全部寫在一個類別文件中

//實際開發中應該為每一個類別創建獨立的類別文件

class Apple extends Fruits
{
    protected $name = &#39;苹果&#39;;
    
    //声明为静态属性
//    public static $name = &#39;苹果&#39;;
    
    public  function eat()
    {
        return $this->name.&#39;可以直接生吃&#39;;
    }
    
    //子类构造方法
    public function __construct()
    {
        echo parent::__construct();
        
    }
    //实现抽象类中的抽象静态方法eat()
//    public static function eat()
//    {
//        return self::$name.&#39;可以直接生吃&#39;;
//    }
}
$apple = new Apple;
echo $apple->eat();
登入後複製

//先前是抽象靜態類別,不需要例化,可以用類別直接存取

//echo Apple::eat();
登入後複製

以上是php中的抽象類別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板