2010-09-06 61 views
7

我想知道你們是如何決定何時在應用程序開發過程中使用抽象或接口類的,因爲它們都提供了略有差別的相似功能。我感謝任何幫助。謝謝。php:何時使用抽象和接口類?

+0

[interface vs abstract class]的可能重複(http://stackoverflow.com/questions/1814821/interface-vs-abstract-class) – VolkerK 2010-09-06 19:15:34

+0

[PHP:可能的接口和抽象類之間的區別是什麼?](http://stackoverflow.com/questions/1913098/php-what-is-the-difference-between-an-interface-and-abstract-class) – Gordon 2010-09-15 22:37:48

回答

3

當我正在開發,並試圖決定是否使用一個接口或抽象類我通常想到是否會繼承將只包含相同的結構(方法,屬性等),但不同的實現類。

如果這些方法的實施將是不同的,但我想,以確保從結構的角度,我使用的界面千篇一律。如果結構和實現是相同的,我傾向於使用抽象類。

+0

它沒有說明爲什麼'如果結構和實現是相同的我傾向於使用抽象類'你使用抽象類如果相同的結構和實現需要? – 2015-04-30 10:57:50

+0

@RNKushwaha,我的意思是說,如果我想共享多個繼承類之間的方法/屬性的相同實現,我會創建一個抽象類,以便實現可以存在於抽象類中。接口不允許任何實現。這是否更有意義? – 2015-04-30 14:18:06

4

我使用抽象類時,我想的繼承的類繼承一些功能和接口時我想設置一些最小結構標準的一組類。

有一點要記住的是,任何給定的類可以「繼承」(技術實現),許多接口,但只有一個子類(是抽象的或沒有)。

1

語言如PHP支持多種接口實現,但並不多類繼承,而這往往是決定的一部分 - 將你的類支持多種行爲(接口)或將它作爲一個類型的事情(基類)的?

還有一個基本功能如何實現的問題。如果您正在使用類似template method pattern的方法,您可以在其中獲得所有派生類的通用實現代碼,那麼您將需要使用抽象基類。

6

如果您有繼承者的默認方法(附帶代碼),請使用抽象。如果您只需確保從此父項繼承的類應實現所有已定義的方法,請使用接口。謹慎的話:只有當你打算強制執行結構和組織時(通常與團隊一起),才使用抽象類和接口。性能開銷很大。

0

當你綁定某些功能是必需的 - 使用interface.but如果你想要一些可選的功能 - 使用抽象類。例如,如果isi(印度標準研究所)爲具有功能的計算機顯示器(它應該有)制定標準 - 顯示器,電源按鈕,對比度設置器。如果所有3個功能都是強制性的,那麼使用界面,這個界面綁定顯示器製造商公司實現所有3個功能。如果任何是可選的,那麼使用抽象類。