首頁 > 後端開發 > PHP問題 > php的抽象類別用法是什麼

php的抽象類別用法是什麼

WBOY
發布: 2023-03-15 14:28:02
原創
1708 人瀏覽過

在PHP中,抽象類別主要用於進行類型隱藏和充當全域變量,可以建構出一個固定的一組行為的抽象描述,這組行為能夠有任意個可能的具體實現方式,只要類別中有一個抽象方法,這個類別就是抽象類別。

php的抽象類別用法是什麼

本文操作環境:Windows10系統、PHP7.1版、Dell G3電腦。

php的抽象類別用法是什麼

抽象類別往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
抽象類別是不完整的,它只能用作基底類別。在物件導向方法中,抽象類別主要用來進行類型隱藏和充當全域變數的角色。

在物件導向方法中,抽象類別主要用來進行型別隱藏。建構出一個固定的一組行為的抽象描述,但這組行為卻能夠有任意個可能的具體實現方式。這個抽象描述就是抽象類,而這一組任意個可能的具體實作則表現為所有可能的衍生類別。模組可以操作一個抽象體。由於模組依賴一個固定的抽象體,因此它可以是不允許修改的;同時,透過從這個抽象體派生,也可擴展此模組的行為功能

#實例操作如下:

<?php
//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。
//只要有一个抽象方法,那么此类必须定义为抽象类。
//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。
//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。
//抽象类不能定义私有方法,可以定义私有属性。
//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
abstract class Employees{
  protected $name = null;
  function __construct($nameStr){
    $this->name = $nameStr;
  }
  abstract public function work();
  public function work1(){
    echo "<p>$this->name</p>";
  }
  //function __destruct(){}
}
class Managers extends Employees{
  public function __construct($nameStr){
    parent::__construct($nameStr);
  }
  /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
    echo "<p>$this->name is working</p>";
  }*/
}
//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
$obj2 = new Managers(&#39;e2&#39;);
//$obj2->work();
登入後複製

執行上述程式碼,會提示下列錯誤訊息:

Fatal error: Class Managers contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Employees::work) in D:phprootwork) in D:phproot \test\ClassDemo.php on line 26

將錯誤提示位置及結尾位置程式碼註解刪除後,改為如下程式碼:

<?php
//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。
//只要有一个抽象方法,那么此类必须定义为抽象类。
//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。
//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。
//抽象类不能定义私有方法,可以定义私有属性。
//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
abstract class Employees{
  protected $name = null;
  function __construct($nameStr){
    $this->name = $nameStr;
  }
  abstract public function work();
  public function work1(){
    echo "<p>$this->name</p>";
  }
  //function __destruct(){}
}
class Managers extends Employees{
  public function __construct($nameStr){
    parent::__construct($nameStr);
  }
  public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
    echo "<p>$this->name is working</p>";
  }
}
//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
$obj2 = new Managers(&#39;e2&#39;);
$obj2->work();
登入後複製

測試運行結果:

##e2 is working

推薦學習:《PHP影片教學

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

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