抽象類別是用來捕捉子類別的通用特性的,是被用來建立繼承層級裡子類別的模板。現實中有些父類別中的方法確實沒有必要寫,因為各個子類別中的這個方法肯定會有不同;而寫成抽象類,這樣看程式碼時,就知道這是抽象方法,而知道這個方法是在子類別中實現的,所以有提示作用。
一、什麼是抽象類別
在物件導向的概念中,所有的對像都是透過類別來描繪的,但是反過來,並不是所有的類別都是用來描繪對象的,如果一個類別中沒有包含足夠的資訊來描繪一個具體的對象,這樣的類別就是抽象類別。
抽象類別除了無法實例化物件之外,類別的其它功能依然存在,成員變數、成員方法和建構方法的存取方式和普通類別一樣。
由於抽象類別無法實例化對象,所以抽象類別必須被繼承,才能被使用。也是因為這個原因,通常在設計階段決定要不要設計抽象類別。
父類別包含了子類別集合的常見的方法,但是由於父類別本身是抽象的,所以不能使用這些方法。
在Java中抽象類別表示的是一種繼承關係,一個類別只能繼承一個抽象類別,而一個類別卻可以實作多個介面。
二、為什麼要用抽象類別?抽象類別有什麼用?
老是在想為什麼要引用抽象類,一般類別不就夠用了嗎。一般類別裡定義的方法,子類別也可以覆蓋,沒必要定義成抽象的啊。
其實不是說抽象類別有什麼用,一般類別確實也能滿足應用,但是現實中確實有些父類別中的方法確實沒有必要寫,因為各個子類別中的這個方法肯定會有不同,所以沒有必要再在父類別裡寫。當然你也可以把抽象類別都寫成非抽象類,但是這樣沒有必要。
而寫成抽象類,這樣別人看到你的程式碼,或你看到別人的程式碼,你就會注意抽象方法,而知道這個方法是在子類別中實現的,所以,有個提示作用。
三、抽象類別和介面的差異
#抽象類別
抽象類別是用來捕捉子類別的通用特性的。它不能被實例化,只能被用來當作子類別的超類別。抽象類別是被用來創造繼承層級裡子類別的模板。
介面
介面是抽象方法的集合。如果一個類別實作了某個接口,那麼它就繼承了這個接口的抽象方法。這就像契約模式,如果實作了這個接口,那麼就必須確保使用這些方法。介面只是一種形式,介面本身不能做任何事。
抽象類別和介面的比較
#什麼時候使用抽象類別和介面
更多程式相關知識,請造訪:程式設計學習! !
以上是抽象類別的作用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!