天天看點

PHP面向對象05_接口與多态

抽象類與接口

2014-9-2 9:14:32

1、抽象類(abstract)

特點:

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

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

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

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

5)抽象方法不能被執行個體化,隻能被繼承(extends);子類必須重載抽象類中所有抽象方法

作用:

1)定義一個規範,具有限制性,強制要求子類定義這些方法(父類中的抽象方法)

注意:

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

2)這些重載的方法的通路控制必須和父類中一樣(或者更為寬松)

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

3)此外方法的調用方式必須比對,即類型和所需參數數量必須一緻

例如,子類定義了一個可選參數,而父類抽象方法的聲明裡沒有,則兩者的聲明并無沖突。

示例:

 2、接口(interface)

接口與抽象類很像,都是限制作用,隻是接口裡面的方法全部是抽象的,且不需要使用abstract申明;

接口使用interface申明

1)接口使用interface申明

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

3)接口不能被執行個體化,必須被引用(implements,同抽象類中的繼承)使用

4)子類可以引用多個接口,用逗号(,)隔開

1)定義一個規範,具有限制性

2)使用接口(interface),可以指定某個類必須實作哪些方法,但不需要定義這些方法的具體内容

1)要實作一個接口,使用implements操作符

2)類中必須實作接口中定義的所有方法,否則會報一個緻命錯誤

3)類可以實作多個接口,用逗号來分隔多個接口的名稱

4)實作多個接口時,接口中的方法不能有重名

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

3、多态的應用

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

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

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

示例: