接口:
- 定義:interface關鍵字,接口中可以有屬性、方法
- 接口的名稱通常以“I”開頭,如IFly、IList
- 如果一個類即繼承了類又實現了接口,那麼類必須寫在接口前面。一個類只能繼承一個父類,但可以實現多個接口。
接口語法:
- 完全抽象的一種約定
- 接口就是用來實現的
- 接口只有方法、屬性、索引和事件的聲明
[訪問修飾符] interface 接口名
{
//接口成員定義
}
interface IfFly
{
void Ifly();
}
接口和類有什麼異同
相同點
接口、類和結構都可以從多個接口繼承
接口類似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的所有成員
接口和類都可以包含事件、索引器、方法、屬性
不同點
不能直接實例化接口
接口不包含方法的實現
接口可以多繼承,類只能單繼承
類定義可在不同的源文件之間進行拆分
類之間不支持多重繼承,接口之間支持。類對接口叫實現,不叫繼承。
抽象類和接口區別
相同點
- 都不能被直接實例化,都可以通過繼承實現其抽象方法
不同點
- 接口支持多繼承,抽象類不能實現多繼承。
- 接口只能定義行爲,抽象類既可以定義行爲,還可以提供實現。
- 抽象類可以定義字段、屬性、包含有實現的方法
- 接口可以作用於值類型(Struct)和引用類型(Class),抽象類只能作用於引用類型。
建立多態幾種方式
- 用父類實現多態
- 用抽象類實現多態
- 用接口實現多態
保留基類方法使用new關鍵字、重寫方法時使用override關鍵字。