C 物件導向的三大特徵 多型,抽象,虛擬

2021-09-25 03:53:04 字數 2228 閱讀 2301

多型性意味著有多重形式。在物件導向程式設計正規化中,多型性往往表現為「乙個介面,多個功能」。

多型性可以是靜態的或動態的。在靜態多型性中,函式的響應實在編譯時發生的。在動態多型性中,函式的響應是在執行時發生的。

在編譯時,函式和物件的連線機制稱為早期繫結,也被稱為靜態繫結。c#提供了兩種技術實現靜態多型性。分別是1.函式過載2.運算子過載

動態多型性是通過抽象類虛方法實現的

c#使用關鍵字abstract建立抽象類,用於提供介面的部分類的實現。當乙個派生類繼承自該抽象類時,實現即完成。抽象類包含抽象方法,抽象方法可被派生類實現。派生類具有更專業的功能。

抽象類規則:

1.不能建立乙個抽象類例項

2.不能在乙個抽象類外部宣告乙個抽象方法

3.抽象函式只能在抽象類內部宣告,無法在正常類中使用

4.抽象類中可以證宣告正常函式

5.繼承了抽象類,則必須要重寫抽象函式

abstract class person

}

class student : person

}

當有乙個定義在類中的函式需要在繼承中實現時,可以使用虛方法。虛方法是使用關鍵字virtual宣告的。虛方法可以在不同的繼承類中有不同的實現。對虛方法的呼叫實在執行時發生的。

虛擬類的規則:

1.虛擬類其實指的是正常類中的虛擬方法,所以虛擬類可以直接使用例項

2.虛擬方法是在方法前加virtual關鍵字

3.虛函式和正常函式沒有區別

4.子類繼承虛擬類可以重寫虛擬方法也可以不重寫虛擬方法

class person

}

class student:person

}

介面定義了所有類繼承介面適應遵循的與法合同。介面定義的語法合同的「是什麼」部分,派生類定義了語法合同「怎麼做」部分

介面定義了屬性、方法和事件,這些都是介面的成員。介面只包含了成員的宣告。成員的定義是派生類的責任。介面提供了派生類應遵循的標準結構。

1.介面必須使用inte***ce關鍵字宣告

2.介面中只能放成員的宣告(只有函式簽名,沒有函式體)

3.繼承介面必須實現介面中國的所有成員

4.可以繼承多個介面,每個介面中的成員都必須實現

5.介面可以隔代繼承,同樣每一代的介面成員最終都要實現

inte***ce iperson

void say();

void run();

}

class student : iperson

public void run()

public void say()

}

介面可以繼承介面

inte***ce school:iperson

class boy : school

public void goback()

public void play()

public void run()

public void say()

}

類可以繼承多個介面,之間使用逗號隔開

class girl : school, iperson

public void goback()

public void play()

public void run()

public void say()

}

1.隱式實現

2.顯式實現,使用介面名點成員實現

inte***ce ihome

inte***ce iperson

void say();

void run();

}

class teacher : ihome, iperson

public void run()

void ihome.say()

void iperson.say()

public void work()

}

物件導向三大特徵 多型

訊息是乙個物件與另乙個物件的通訊單元,是要求某個物件執行類中定義的某個操作的規格說明。傳送給乙個物件的訊息定義了乙個方法名和乙個參數列 可能是空的 並指定某乙個物件。物件接收的訊息則呼叫訊息中指定的方法,並將形式引數與參數列中相應的值結合起來。如有兩個類分別是教練和運動員,如下 教練類 public...

物件導向三大特徵之多型

1.概念 同乙個動作用於吧不同的物件產生不同的行為 2.體現方式 1 方法過載 overload 2 方法重寫 override 3 物件的多型性 父類的引用指向子類的例項 3.多型可以分為編譯時多型和執行時多型 編譯時多型 靜態的,主要指的是方法過載,因為在編譯時呼叫相同的方法通過不同的形參列表來...

物件導向 三大特徵 繼承 多型

繼承 訪問修飾符 class 類名 類名 乙個類只能有乙個父類 親爹 父類 某個類繼承自某個類 子類 派生類 超類 多型 類的多種形態 父類存在虛方法 virtual 子類重寫 override 訪問修飾符 public 公共的,只要引用了命名空間就能用 訪問級別最高 private 私有的,只能在...