abstract和virtual方法實現多型的區別

2021-05-25 22:24:35 字數 652 閱讀 1105

多型就是不同物件對同乙個訊息的不同相應方式。

舉例:cut(訊息)

醫生收到cut訊息後,執行動手術;

理髮師收到cut訊息後,執行減法;

演員收到cut訊息後,停止演出。

三個不同物件,對同乙個cut訊息的反應都不同,這就是多型。

在c#中abstract和virtual方法都能實現多型。

1.用abstract修飾方法是抽象方法,沒有方法體,該類必須宣告為abstract class(抽象類),用virtual修飾的方法是虛方法,有方法體;

2.子類繼承了抽象類,必須重寫(override)父類抽象方法,而不一定要重寫父類的虛方法;

3.子類只有重寫的父類的虛方法後才能實現多型;

code:

public

class person   

}   

public

class student:person   

}   

listpersons=new list();   

foreach(person p in persons)   

//因為子類的hello沒有使用override,相當於是new方法,導致不能實現多型

public

newvoid hello()   

abstract類和abstract方法

可以使用abstract來修飾乙個類或者方法。用abstract修飾的類表示這個類是乙個抽象類,用abstract修飾的方法表示這個方法是乙個抽象方法。抽象類不能被例項化。抽象方法是只有方法宣告,而沒有方法的實現內容。可以使用abstract來修飾乙個類。用abstract修飾的類表示這個類是乙個抽...

abstract類和abstract方法

可以使用abstract來修飾乙個類或者方法。用abstract修飾的類表示這個類是乙個抽象類,用abstract修飾的方法表示這個方法是乙個抽象方法。抽象類不能被例項化。抽象方法是只有方法宣告,而沒有方法的實現內容。可以使用abstract來修飾乙個類。用abstract修飾的類表示這個類是乙個抽...

abstract類和abstract方法

可以使用abstract來修飾乙個類或者方法。用abstract修飾的類表示這個類是乙個抽象類,用abstract修飾的方法表示這個方法是乙個抽象方法。抽象類不能被例項化。抽象方法是只有方法宣告,而沒有方法的實現內容。abstract 抽象類 可以使用abstract來修飾乙個類。用abstract...