一:抽象類
- 簡介
用abstract修飾的類叫做抽象類。
抽象類就是爲了繼承而存在的,如果你定義了一個抽象類,卻不去繼承它,
那麼等於白白創建了這個抽象類,因爲你不能用它來做任何事情。對於一個父類,
如果它的某個方法在父類中實現出來沒有任何意義,必須根據子類的實際需求來進行不同的實現。
- 抽象類的特點
⑴抽象類不能有對象,(不能用new此關鍵字來創建抽象類的對象)
a:創建一個抽象類Animal
b:嘗試創建Animal對象
⑵有抽象方法的類一定是抽象類
a:有抽象方法的類一定是抽象類,但是抽象類中不一定有抽象方法
b:但是抽象類中不一定有抽象方法
⑶抽象類中的抽象方法必須在子類中被重寫
a:創建一個抽象類Animal
b:創建一個子類Cat
⑷abstract修飾的方法爲抽象方法,此方法不能有方法體(就是什麼內容不能有)
注意:抽象方法不能有方法體,在方法後面加一個大括號而裏面什麼都不寫也是不行的,
編譯器會報“abstract methods do not specify a body”這樣一個錯誤。
二:接口
- 簡介
接口就是一個規範和抽象類比較相似。它只管做什麼,不管怎麼做。通俗的講,接口就是某個事物對外提供的一些功能的聲 明,其定義和類比較相似,只不過是通過interface關鍵字來完成。 - 接口的特點
⑴接口中的所有屬性默認爲:public static final ****;並且要有初始化值
下面給與初始化值,然後測試一個子類
由上可知,雖然我們定義num變量的時候,沒有設置final屬性,但是通過上面的
效果可知num這個變量的值還是不可修改的,默認帶有final屬性。
⑵接口中的所有方法默認爲:public abstract ****;
三:接口和抽象類的區別