抽象類概述:
1.該類的概念是抽象的,如形狀,生物這些概念,無法例項化一個物件,所以抽象類是不允許建立物件的;
2.對於這種類,這裡面的大多數方法如果不透過繼承的方式對類裡面的方法進行重寫的話,是無法執行的,比如一個形狀類,既然有形狀,就因該有顯示名字方法,計算面積方法,在一些特定的座標系上還應該具有畫出該形狀的方法,但是這些無法實現;再比如對生物而言,有叫,吃東西,爬行,作息等方法,對生物這麼一個抽象類,呼叫叫的方法的時候發出什麼聲音?所以抽象類不允許建立實力物件,因為即使建立了,他的方法也是無法執行的;
抽象方法與特殊方法區別
3.第二點介紹了抽象類裡面的有些方法有其特殊性,這種特殊方法叫做抽象方法,那麼剩下的我們就叫普通方法。如何理解?我們假設牛這個類繼承了生物類,那麼生物有出生時間,我們可以在生物類裡面進行這個方法的定義,建立牛這個類的物件的時候就直接給出出生日期,呼叫父類的記錄出生日期的方法就行了,這種方法到任何一個子類當中,都可以不用被重寫就能夠直接使用,那麼我們將這種方法為普通方法。但是對於牛叫聲等方法直接呼叫父類中生物的叫聲方法是無法執行的,我們就把這種方法叫做抽象方法。
只要含有抽象方法的類,都叫做抽象類,很明顯透過上面的介紹,抽象類既可以包含抽象方法,也可以包含普通方法。
書寫格式
public abstract class 類名
只要這個類裡面有抽象方法,就需要在class前面加上abstract關鍵字
抽象類繼承說明
只要註明的是抽象類加上的abstract關鍵字,那麼它就是一個抽象類。需要注意的一點是,在一個抽象類中可能有零個或者多個抽象方法,特別要注意的是,當抽象方法的個數為零的時候,只要標明的這個類是抽象類,那麼這個類依然是一個抽象類。
如果一個類是抽象類的子類,那麼這個類有可能是抽象類,也有可能不是抽象類,對此,我們應該如何進行一個區分呢?如果這個類完成了對它所繼承的抽象類中所有的抽象方法的重寫,那麼這個類它就不再是一個抽象類了,如果沒有完成所有的抽象方法的重寫,這個子類依然屬於抽象類的範疇。
介面
下面我們來介紹介面,介面和抽象類之間有很大的相似性。
1.首先介面的關鍵字是 interface,和抽象類的class有區別。
2.在我們剛剛介紹的抽象類裡面,抽象類既可以包含普通方法,也可以包含抽象方法,但是介面中只能含有抽象方法,而且所有的方法都是public屬性的。
從一個父類到一個子類的關係,我們把它叫做繼承,如果一個介面和一個內相連線,我們稱之為這個類,對這個介面進行了實現,關鍵詞是implement。
這是一個介面
這是一個介面的實現
從圖片給出的示例來看,其語法格式和類的繼承有一些相似,但是介面是可以有多個實現的,這和類只能進行單繼承有所區別。
和抽象類一樣,介面裡面的方法都必須被重寫。
應用
由於一個類可以實現對多個介面的實現,所以介面有時候也被用來解決多繼承。
另外介面有時候還被用於做一個統一的標準,比如要做一個學生資訊系統,如果把這個系統中的不同功能分給不同的人來做,沒有一個強制化的標準,組合在一起的時候就會千奇百怪,那麼我們可以給出一個學生介面,學生介面中所有的方法都需要被重寫,那麼不同人在實現這個學生系統的時候,就能夠做到一個標準的統一。
最後介面也是不能被例項化的。