C 多型前奏

2021-07-07 05:17:53 字數 1713 閱讀 8863

「龍生蛇,鳳生雞,老鼠的兒子會吃雞」,這是自然界中的變異法則在起作用,物件導向語言借用了變異的思想方法,從而實現了多型性。

同一操作,作用於不同的物件,可以有不同的解釋,從而產生不同的執行結果,這就是多型性,也可以說是同乙個型別的例項呼叫相同的方法,產生的結果是不同的。c#多型性涉及到了過載、重寫、虛方法、抽象方法和隱藏方法,因此先對這些概念進行簡單總結。

(一、)過載(overload)

在同一作用域的兩個或多個方法函式名相同,引數列表不同的方法叫做過載。

過載的三個特點:

1、方法名必須相同

2、引數列表必須不相同

3、返回值型別可以不相同

public static int addnumber(int num1, int num2)

public static double addnumber(double num1, double num2)

(二、)重寫(override)

子類中為滿足自己的需要來重複定義某個方法的不同實現,需要用override關鍵字,被重寫的方法必須是虛方法,用的是virtual關鍵字。

重寫的特點是方法名、引數列表、返回值都相同。

//父類

public virtual void eatfood()

//子類

public override void eatfood()

(三、)虛方法

虛方法即為基類中定義的允許在派生類中重寫的方法,使用virtual關鍵字定義。

public virtual void eatfood()

虛方法呼叫

animal a = new animal();

a.eatfood();

(四、)抽象方法

在基類中定義的並且必須在派生類中重寫的方法,使用abstract關鍵字定義。抽象方法只能在抽象類中定義,且因抽象類無法例項化,抽象方法不能被呼叫。

public abstract class animal

public class pig : animal

}

pig pig = new pig();

pig.shout();

console.readkey();

抽象方法是用abstract修飾;抽象方法沒有方法體;抽象方法必須在抽象類中;父類是抽象類,子類繼承了這個類,必須把抽象類中的抽象方法重寫。

(五、)隱藏方法

在派生類中定義的和基類中的某個方法同名的方法,使用new關鍵字定義。如在基類animal中有一方法sleep():

public void sleep()

則在派生類cat中定義隱藏方法的**為:

new public void sleep()

隱藏方法不但可以隱藏基類中的虛方法,而且也可以隱藏基類中的非虛方法;隱藏方法中父類的例項呼叫父類的方法,子類的例項呼叫子類的方法。

以上就是c#多型性一些相關概念的簡單總結。。。

重寫前奏 繼承和多型

上次說到的過載是指同一類中方法和方法之間的關係,這次向大家介紹的重寫是子不同類中方法和方法的關係 在介紹重寫之前,要先說說繼承和多型 物件的繼承代表了 is a 的關係,a和b可以描述成b是a,就可以稱為b可以繼承a,不能相互顛倒。繼承者是被繼承者的特殊化。在繼承中,子類是派生類,父類是基類。子類不...

C 多型 繼承多型

什麼是多型?個人理解為 在程式語言繼承關係中,子類能替代父類,表現出不同的行為。換句話說 在繼承關係中,乙個類被例項化被其子類替代,子類中有父類的虛方法重寫,或者有父類同名方法 new 呼叫相同方法時候,將表現出子類或者父類中不同行為 老闆,上 static void main string arg...

R O R 開發前奏

裝好ruby以後,開啟命令列視窗輸入 ruby v 如果出現ruby的版本號 1.8.5 最新 就為安裝成功 出現版本號 1.2.2 最新 就為安裝成功,rails安裝在ruby目錄下 lib ruby gems 1.8 gems rails 1.2.2 如果你選用的開發ide是radrails的話...