php中類別繼承與介面繼承的差別是什麼

WBOY
發布: 2023-03-15 12:18:01
原創
2849 人瀏覽過

在PHP中,類別繼承與介面繼承的區別是:PHP類別不支援多繼承,也就是子類別只能繼承一個父類,但是支援多層次繼承,而介面支援多繼承,也就是介面可以繼承一個或多個介面。

php中類別繼承與介面繼承的差別是什麼

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

php中類別繼承與介面繼承的差別是什麼

PHP類別繼承:

#1、PHP類別不支援多繼承,也就是子類別只能繼承一個父類,但是支援多層次繼承

例如:

class frist{
  public function __construct(){
    echo "我是第一个类。","<br>";
  }
  public function printer(){
    echo "frist","<br>";
  }
}
class seconds extends frist{}
class third extends seconds{}
$obj = new third();
$obj->printer();
登入後複製

結果:這是第一個類別。 frist 第二個類別和第三個類別沒有重寫printer()方法,第三個類別實例化後可以呼叫printer()方法。

2、繼承權限問題

(1)父類別private方法不可被繼承,父類別私有化

(2)父類別protected方法可以被繼承,但不能被實例化物件調用,如果呼叫會出現" Call to protected method frist::printer()"的報錯,父類別對此方法置於保護模式下

(3)父類public方法可以被繼承、可以被實例化物件調用,屬於公開方法

(4)子類別可重寫父類別public或protected的方法,不能重新private的方法,如果同名只是在本類別重新聲明

3、介面類別繼承

(1) 介面支援多重繼承,介面類別的方法不需要實作例如:

interface frist{
  public function ex1();
}
interface seconds{
  public function ex2();
}
interface third extends frist,seconds{
  public function ex3();
}
class fourth implements third{
  public function ex1(){}
  public function ex2(){}
  public function ex3(){}
}
class fourth implements frist,seconds{
  public function ex1(){}
  public function ex2(){}
}
登入後複製

(2) 介面類別的方法權限都是public,預設public

(3)引用介面的類別必須實作介面的所有方法,否則會報錯,例如:"Class e contains 1 abstract method and must therefore be declared abstract or implement the remaining methods",即:e類別包含1個抽象方法,因此必須宣告抽像或實作其餘方法。

4、抽象類別:只要一個類別裡面有一個方法是抽象方法,那麼這個類別就要定義為抽象類別

(1)抽象類別繼承抽象類別不能重寫父類方法。

(2)抽象類別繼承是對父類別的方法的拓展。

(3)繼承的衍生類別當中要把所有抽象方法重載才能實例化。

(4)抽象類別實作的普通發放,可以在非抽象子類別中直接呼叫。

5、介面和抽象類別的異同點(引用抽象類別與介面區別)

(1)對介面的使用方式是透過關鍵字implements實現的,而對於抽象類別的操作是使用類別繼承的關鍵字exotends實現的

(2) 介面沒有資料成員,但是抽象類別有資料成員,抽象類別可以實現資料的封裝。

(3) 介面沒有建構函數,抽象類別可以有建構子。

(4)介面中的方法都是public類型,而抽象類別中的方法可以使用private、protected或public來修飾。

(5) 一個類別可以同時實作多個接口,但是只能實作一個抽象類別。

(6) 相同點:函數體內不能寫任何東西,例如:function getName();即可。

推薦學習:《PHP影片教學

以上是php中類別繼承與介面繼承的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!