首頁  >  文章  >  後端開發  >  php中的抽象類別和靜態方法是什麼

php中的抽象類別和靜態方法是什麼

王林
王林原創
2020-09-29 09:36:142095瀏覽

php中的抽象類別是指:在class前面加了abstract關鍵字且存在抽象方法的類,它不能被直接實例化;靜態方法是指:被static關鍵字修飾的方法,靜態方法用於操作靜態屬性。

php中的抽象類別和靜態方法是什麼

抽象類別

抽象類別是指在class 前加了 abstract 關鍵字且有抽象方法(在類別方法function 關鍵字前加了abstract 關鍵字)的類別。

(推薦教學:php影片教學

抽象類別不能直接被實例化。抽象類別中只定義(或部分實作)子類別所需的方法。子類別可以透過繼承抽象類別並透過實作抽象類別中的所有抽象方法,使抽象類別具體化。

如果子類別需要實例化,前提是它實作了抽象類別中的所有抽象方法。如果子類別沒有全部實作抽象類別中的所有抽象方法,那麼該子類別也是抽象類別,必須在 class 前面加上 abstract 關鍵字,並且不能被實例化。

舉例說明:

abstract Class AbstractClass
{
    abstract public function A();//这里不要携带body
    abstract protected function B();//这里不要携带body
    public function C(){}//这里要携带body
}

class ClassA extends AbstractClass
{
    public function A(){
        echo "Hello,I&#39;m A <br/>";
    }
    protected function B(){
        echo "Hello,I&#39;m B <br/>";
    }
    public function E()
    {
        echo "Hello,I&#39;m E <br/>";
    }
}

靜態方法:

靜態方法被static關鍵字修飾。

靜態方法用於操作靜態屬性。所以,靜態方法裡面不能操作非靜態屬性。

由於靜態方法不需要透過物件即可調用,所以偽變數$this在靜態方法中不可用。

如何存取靜態方法呢?

在類別內部:類別名稱::靜態方法或 self::靜態方法

在類別外部:類別名稱::靜態方法或 物件實例->靜態方法

舉例說明:

class Person{
    public static $nums = 0;    // 静态属性的申明
    public $age = 0;
    public function addNum(){
        self::$nums++;
        echo self::$nums;   // 在类里面,可用self关键词访问静态属性
        echo Person::$nums;     // 类可直接访问静态属性
        // echo $this->nums;  // 报错,静态属性不可以由对象通过 -> 操作符来访问
        self::getNum();     // 在类里面,可用self关键词访问静态方法
        Person::getNum();   // 类可直接访问静态方法
    }
    public static function getNum(){
        // 静态方法
        // echo $this->age;  // 报错,静态方法里面不能操作非静态属性
        echo &#39;真的吗?&#39;.self::$nums;    //静态方法中只能操作静态属性 
    }
}
$p1 = new Person();
$p1->addNum();
echo $p1::$nums;    // 对象实例可以这样访问静态属性
Person::getNum();   // 类可直接访问静态方法
$p1->getNum();  // 对象实例可以这样访问静态方法

相關推薦:php訓練

#

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn