關於什麼時候用抽象類,什麼時候用介面,我在這裡做一下總結。
首先看下面的例子:
abstract class abstractstudent
void smoke()
}//所有的student被建立都會抽菸,是不是很搞笑?
class student extends abstractstudent
上面這個學生抽象類中有三個方法,學習,睡覺,抽菸。我們知道任何乙個學生都要學習,都要睡覺,但是不是
每個學生都要抽菸呢?這顯然是不合理的。難道說建立乙個學生物件,就一定要強加給他抽菸的方法?就像乙個
學生來了,就一定要他會抽菸?女生也不放過?哈哈!這顯然是很荒唐的事情。
於是我們做如下調整:
abstract class abstractstudent
}inte***ce smoking
//普通的學生,繼承abstractstudent,有學習、睡覺的方法,不抽菸
class student extends abstractstudent
//抽菸的學生,除了繼承abstractstudent中的方法,還會抽菸
class smokestudent extends abstractstudent implements smoking
這樣,就把抽菸的同學和不抽菸的同學分離開了。 現在你感覺到了抽象類與介面的不同點了嗎?
總結:抽象類中通常放的是類種事物(物件)共有的屬性和方法,於是它的子類繼承它的時候
就自然有了其所有屬性和方法,當有些方法是某種子類特有的時,就應該將這個方法分離出來,
以附加的形式(implements)新增進去。
什麼時候用介面,什麼時候用抽象類
很多人都認為抽象類和介面都 差不多 於是就隨便選一種來開發專案。其實這是一種非常不明智的做法,若選擇上稍微有些錯誤,到了專案開發後期,這些錯誤將會越來越明顯,越來越大,最後直接導致專案的失敗。在介面和抽象類的選擇上,必須遵守這樣乙個原則 行為模型應該總是通過介面而不是抽象類定義。為了說明其原因,下面...
什麼時候用抽象類什麼時候用介面
如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單易行的方法來控制項版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,介面一旦建立就不能更改。如果需要介面的新版本,必須建立乙個全新的介面。如果建立的功能將在大範圍的全異物件間使用,則使用介面。抽象類應主要用於關係密切的物件,而介面最適...
什麼時候使用抽象類, 什麼時候使用介面
介面是一種協定,抽象類則相當於類模板。使用抽象類,而不要使用介面來分離協定與實現。如果需要提供多型層次結構的值型別,使用介面。如果乙個型別必須實現多個協定,或者協定適用於多種型別,使用介面。雖然抽象類和介面都支援將協定與實現分離開來,但介面不能指定以後版本中的新成員,而抽象類可以根據需要新增成員以支...