程式碼形式上來說,介面只是一個宣告,其方法沒有任何實現程式碼;抽象類的方法既可以沒有實現程式碼,也可以擁有實現程式碼。
php5引入抽象類和方法(abstractclass)。抽象類不能被例項化。任何類只要包含有抽象方法(即使只有一個抽象方法)就必須也被定義為抽象。定義為抽象的方法只需要簡單的宣告而不用實現。
從抽象類繼承的時候,所有父類中標記為抽象方法的宣告都必須在子類中定義;此外,這些方法還必須用相同的(或更弱的)訪問控制。比如,如果抽象方法定義為保護(protected),函式實現必須被定義為protected或者public
interface物件介面允許你建立這種程式碼,一個類必須實現的指定方法,而又不必定義這些方法如何處理。介面使用interface關鍵字定義,和標準類定義一樣,但是任何方法都沒有內容。介面內所有的方法宣告都必須為公開(public),這是介面的本質(呵呵,所謂介面嘛,就是用於互動的)。
實現
要實現一個介面,使用implements運算子。介面中的所有方法都必須在一個類中實現;不這麼做會導致一個致命錯誤(fatalerror)。如果想要的話,使用逗號分隔每個介面,一個類可以實現多個介面。
注意:一個類不能實現兩個有同樣函式名的介面,因為這導致這個函式的含義模糊。
程式碼形式上來說,介面只是一個宣告,其方法沒有任何實現程式碼;抽象類的方法既可以沒有實現程式碼,也可以擁有實現程式碼。
php5引入抽象類和方法(abstractclass)。抽象類不能被例項化。任何類只要包含有抽象方法(即使只有一個抽象方法)就必須也被定義為抽象。定義為抽象的方法只需要簡單的宣告而不用實現。
從抽象類繼承的時候,所有父類中標記為抽象方法的宣告都必須在子類中定義;此外,這些方法還必須用相同的(或更弱的)訪問控制。比如,如果抽象方法定義為保護(protected),函式實現必須被定義為protected或者public
interface物件介面允許你建立這種程式碼,一個類必須實現的指定方法,而又不必定義這些方法如何處理。介面使用interface關鍵字定義,和標準類定義一樣,但是任何方法都沒有內容。介面內所有的方法宣告都必須為公開(public),這是介面的本質(呵呵,所謂介面嘛,就是用於互動的)。
實現
要實現一個介面,使用implements運算子。介面中的所有方法都必須在一個類中實現;不這麼做會導致一個致命錯誤(fatalerror)。如果想要的話,使用逗號分隔每個介面,一個類可以實現多個介面。
注意:一個類不能實現兩個有同樣函式名的介面,因為這導致這個函式的含義模糊。