抽象類與介面

2021-06-25 08:32:27 字數 1330 閱讀 5030

在類與類之間存在繼承關係時,有可能會出現父類存在一種功能(方法),但在不同子類中該方法內容不一樣。比如動物都有吃的功能,而貓吃老鼠,狗吃骨頭,兩者內容不一樣,這時,就要使用抽象類。

例項解釋:

abstract class animal//class前要加abstract關鍵字

}class cat extends animal

}class dog extends animal

}

注意事項:1,如果子類沒有把父類中的所有抽象函式重寫掉的話,子類也必須定義為抽象類。

2,抽象類不能建立物件。

在子類較少時,內容不同的同一功能可以不定義在父類中,而是定義為子類的特定功能,但是如果子類種類很多,就應該使用抽象類,以免功能丟失。

接下來要說的是介面,介面其實就是特殊的抽象類,介面中的所有函式都是抽象函式,介面也有子類,子類並不是繼承介面,而是實現介面(其實基本用法一樣),關鍵字為implements,而定義介面時還要用到的關鍵字是inte***ce,取代class。

舉個例子展示一下格式:

inte***ce kaiguan//介面的定義(名字是開關。。。。)

class light implements kaiguan//implements關鍵字完成實現開關介面

public void close()

};

介面的功能:有利於程式功能的擴充套件,有利於開發的模組化,至於具體例子,等學完多型就明白了。

介面的特點:1,介面可以多實現,這也是與繼承之間最大的區別,在類中,如果實現多繼承,那麼如果不同父類中含有同名功能,在通過子類物件呼叫該功能時,就會出錯,    因為不知道要呼叫哪個函式,而對於介面,由於介面中定義的全是抽象函式,無函式主體,只有被子類重寫後才有用,並且以子類中定義的為準,因此不存在    矛盾。

2,介面中的成員有固定的修飾符,其中常量是public static final,方法是public abstract,一般不會在介面中定義變數,這些修飾符是固定的,即使忘了寫,系統也            會預設加上(隱式)。

既然上面講到了final這個修飾符,那就要講一下。

final可以用來修飾常量(final變數),方法以及類。

常量的修飾:final 型別 常量名=值;被final修飾過的變數只能被賦值一次,換句話說,在接下來的**中,不能對final變數的值進行修改。

方法的修飾:final 型別 方法名(引數) 被final修飾過的方法不能被重寫。可以把類中一些重要的方法用final去修飾,防止被重寫。

類的修飾:final class 類名 被final修飾過的類不能被繼承,而且類中所有方法也預設被final修飾。

介面與抽象類

介面與抽象類區別 個人總結 語法結構 1 型別可以繼承多個介面,但是只能繼承乙個抽象類,即不支援多重繼承。2 介面可以用於值型別和引用型別,例如struct和class,而抽象類不能用於值型別,只能用於引用型別。3 抽象類定義可以包括建構函式,字段資料,非抽象成員 具體實現 等,而介面只能包括抽象成...

介面與抽象類

抽象類 當抽象類作為父類時,他的子類對其中的抽象類方法有不同的方法體 簡單舉例為 classhorse mammal,ilangbound public int numeroflegs return 4 inte ce ilandbound int numberoflegs 介面例子 main函式 ...

抽象類與介面

記住抽象類與普通類的唯一區別就是不能建立例項物件和允許有abstract 方法含有abstract 修飾符的 class 即為抽象類,abstract 類不能建立的例項物件。含有 abstract 方法的類必須定義為 abstract class abstract class 類中的方法不必是抽象的...