2011-01-05 66 views
3

可能重複:
purpose of interface in classes
What is the difference between an interface and abstract class?接口和抽象類的優點是什麼?

您好我是一個PHP程序員。任何機構都可以解釋使用接口和抽象類的優點。

+0

參考:http://www.php.net/manual/en/language.oop5.interfaces.php – 2011-01-05 17:25:23

+1

http://stackoverflow.com/questions/1913098/php-what-is-the可能的重複-difference-between-an-interface-and-abstract-class – Saul 2011-01-05 17:26:04

+1

...或其上的數百萬資源中的任何其他資源(請注意,語言不可知的資源也應該主要應用於此,所以您可以避免有時令人驚恐的低 - 質量PHP示例)。 – delnan 2011-01-05 17:26:45

回答

11

接口的主要優點是它允許你定義一個協議來實現一個對象有一些行爲。例如,您可以使用一個Comparable接口和一個比較方法來實現類,每個實現它的類都會有一個標準化的比較方法。

抽象類允許你爲幾個具體類定義一個公共基礎。例如,假設你想定義類代表動物:

abstract class Animal { 
    abstract protected function eat(); 
    abstract protected function sleep(); 
    public function die() { 
     // Do something to indicate dying 
    } 
} 

在這種情況下,我們定義eat()sleep()作爲抽象的,因爲不同類型的動物(如獅,熊等)將從Animal繼承以不同的方式進食和睡眠。但是所有的動物都以同樣的方式死亡(不要讓我這麼做),所以我們可以爲此定義一個共同的功能。使用抽象類幫助我們1.)聲明所有Animal應該具有的一些常用方法,以及2.)定義Animal的常見行爲。因此,當您擴展Animal時,您不必重寫die()的代碼。