PHP物件導向05 介面與多型

2021-09-23 21:08:49 字數 1903 閱讀 2759

抽象類與介面

2014-9-2 9:14:32

摘要:

1、抽象類(abstract)

2、介面(inte***ce)

3、多型的應用

1、抽象類(abstract)

特點:

1)抽象類使用abstract關鍵字申明

2)抽象類中可以沒有抽象方法

3)任何乙個類,如果它裡面至少有乙個抽象方法,那麼這個類就必須被宣告為抽象的

4)抽象方法沒有方法體,直接分號(;)結束,,使用abstract關鍵字申明

5)抽象方法不能被例項化,只能被繼承(extends);子類必須過載抽象類中所有抽象方法

作用:1)定義乙個規範,具有約束性,強制要求子類定義這些方法(父類中的抽象方法)

注意:1)繼承乙個抽象類的時候,子類必須定義父類中的所有抽象方法

2)這些過載的方法的訪問控制必須和父類中一樣(或者更為寬鬆)

例如某個抽象方法被宣告為受保護的,那麼子類中實現的方法就應該宣告為受保護的或者公有的,而不能定義為私有的

3)此外方法的呼叫方式必須匹配,即型別和所需引數數量必須一致

例如,子類定義了乙個可選引數,而父類抽象方法的宣告裡沒有,則兩者的宣告並無衝突。

示例:

abstract class demo

}class subdemo extends demo

}

2、介面(inte***ce)

介面與抽象類很像,都是約束作用,只是介面裡面的方法全部是抽象的,且不需要使用abstract申明;

介面使用inte***ce申明

特點:1)介面使用inte***ce申明

2)介面中的方法全部是抽象的,不需要使用abstract申明

3)介面不能被例項化,必須被引用(implements,同抽象類中的繼承)使用

4)子類可以引用多個介面,用逗號(,)隔開

作用:1)定義乙個規範,具有約束性

2)使用介面(inte***ce),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容

注意:1)要實現乙個介面,使用implements操作符

2)類中必須實現介面中定義的所有方法,否則會報乙個致命錯誤

3)類可以實現多個介面,用逗號來分隔多個介面的名稱

4)實現多個介面時,介面中的方法不能有重名

5)介面也可以繼承,通過使用extends操作符

示例:

inte***ce db
3、多型的應用

物件的多型性是指在父類中定義的屬性或行為被子類繼承之後,可以具有不同的資料型別或表現出不同的行為.

這使得同乙個屬性或行為在父類及其各個子類中具有不同的語義.

例如生活中的usb就可以實現多型功能:插入u盤和滑鼠都能正常工作,且完成各自的工作,但內部肯定有一致的規範定義

示例:

<?php

//定義乙個外圍控制介面pci

inte***ce pci

//定義主機板類

class mainborad

}//定義音效卡引用pci規範

class soundcard implements pci

public function stop()

}//定義網絡卡引用pci規範

class networkcard implements pci

public function stop()

}$sys = new mainborad();

$sys->work(new soundcard);//傳入音效卡物件

$sys->work(new networkcard);//傳入網絡卡物件

?>

PHP物件導向05 介面與多型

抽象類與介面 2014 9 2 9 14 32 摘要 1 抽象類 abstract 2 介面 inte ce 3 多型的應用 1 抽象類 abstract 特點 1 抽象類使用abstract關鍵字申明 2 抽象類中可以沒有抽象方法 3 任何乙個類,如果它裡面至少有乙個抽象方法,那麼這個類就必須被宣...

物件導向8(介面)

概念 使用inte ce修飾的 塊。語法 訪問修飾符 inte ce 介面名 訪問修飾符 暫時使用public inte ce 關鍵字,含義是介面。介面名 識別符號。介面成員 靜態常量,抽象方法。inte ce inter class method implements inter public c...

物件導向 8 介面與介面的實現

二 介面的作用?三 介面的相關語法 四 介面的向上造型 總結 1 介面的語法 2 什麼情況下用介面?3 介面的好處 本篇文章主要講解介面的語法,什麼情況下用介面?讀者如果發現有什麼理解錯的地方指正一下,我會第一時間來改正並重新學習,謝謝大家 1 是一種資料型別 引用資料型別 2 由inte ce定義...