PHP類別抽象化

WBOY
發布: 2023-08-31 06:00:01
轉載
1519 人瀏覽過

PHP類別抽象化

##簡介

在物件導向程式設計中,抽象類別是可以實例化的類,也就是不可能宣告此類別的物件。 PHP從5.0版本開始支援抽象類別的概念

用abstract關鍵字定義的類別成為抽象類別。此外,任何包含至少一個抽象方法的類別也被認為是抽象的。

語法

#
<?php
class testclass{
   //
}
?>
登入後複製

#如果我們嘗試建立這個類別的一個對象,PHP解析器會拋出以下錯誤:

$a=new testclass();
PHP Fatal error: Uncaught Error: Cannot instantiate abstract class testclass
登入後複製

#抽象方法

抽象方法僅聲明其簽名,即其可見性、參數和帶有類型提示的返回類型,並且不具有任何功能。繼承此類抽象類別的類別必須重寫(提供定義)所有抽象方法。子類別中的相應方法必須具有與父類別中相同的簽名。如果子類別不滿足此條件,PHP 解析器將拋出異常。擴展抽象類別的類別現在可以被實例化,因此它被稱為具體類別

在下面的範例中,父類別有兩個抽象方法,只有其中一個在子類別中重新定義。這會導致錯誤如下 -

##Example

 Live Demo

<?php
abstract class testclass{
   abstract function test1();
   abstract function hello();
}
class myclass extends testclass{
   function test1(){
      echo "Overrides parent test method";
   }
}
$a=new myclass();
?>
登入後複製

Output

以下是錯誤訊息

PHP Fatal error: Class myclass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (testclass::hello)
登入後複製

Abstract method帶參數

當定義帶參數的抽象方法時,必須在具有相同數量參數的子類別中重寫它

在下面的範例中,父類別中的抽象方法有兩個參數。子類別也定義了具有兩個參數的相同函數

範例

 Live Demo

<?php
abstract class testclass{
   abstract function hello($name, $age);
}
class myclass extends testclass{
   function hello($name, $age){
      echo "My name is $name and my age is $age";
   }
}
$a=new myclass();
$a->hello("Ravi",20);
?>
登入後複製

輸出

這將產生以下輸出-

My name is Ravi and my age is 20
登入後複製

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

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