abstract :表示方法是抽象方法,在子類中必須重寫。抽象方法所在的類必須是抽象類,即用abstract modifiers;
virtual:表示此方法是virtual方法,除了在子類中可以重寫外(在子類中也可直接使用),和普通方法完全一樣;
override:表示重寫父類的virtual方法;
new: 顯式隱藏從基類繼承的成員;
區別:virtual:標記方法為虛方法
1.可在派生類中以override覆蓋此方法
2.不覆蓋也可由物件呼叫
3.無此標記的方法(也無其他標記),重寫時需用new隱藏原方法
abstract 與virtual : 方法重寫時都使用 override 關鍵字
如果子類重寫了父類的虛方法,那麼通過父類變數來呼叫這個方法的時候會呼叫子類的,如果沒有,則會呼叫父類的
eg1:
publicoutput:abstract
class book
public
abstract
void getprice(); //抽象方法,不含主體
public
virtual
void getname() //虛方法,可覆蓋
public
virtual
void getcontent() //虛方法,可覆蓋
public
void getdate() //一般方法,若在派生類中重寫,須使用new關鍵字
}public
class chinesebook : book
public
override
void getname() //覆蓋原方法,不是必須的
public
newvoid getdate()
public
void run()
}
this is a test:chinesebook override abstract getprice()
this is a test:chinesebook override virtual getname()
this is a test:virtual getcontent()
this is a test:chinesebook new getdate()
eg2:
publicabstract
class flowmodel
public
virtual
void c()
public
void d()
}public
class flow:flowmodel
public
virtual
void b()
public
void c()
public
newvoid d()
public
void run()
}
output:execute step a
execute step b
execute step c
execute step d
抽象方法與虛方法
在物件導向程式設計語言中抽象方法指一些只有方法宣告,沒有具體方法體的方法。抽象方法一般存在於抽象類或介面中。在c 中,抽象方法具有以下特性 抽象方法是隱式的virtual方法 只允許在抽象類中使用抽象方法宣告 因為抽象方法不提供實現,所以沒有方法體 方法宣告只是以乙個分號結束,並且在簽名後沒有大括號...
C 虛方法 抽象方法
首先在c 中虛方法的定義 public virtual void virtualmethod 只要在方法名前加上virtual,就宣告了該方法為虛方法,注意宣告為虛方法後再不能加上abstract,static關鍵字宣告 以下是插入乙個例項來說明虛方法與非虛方法的不同 public class a ...
虛方法與抽象方法
虛方法 virtual,虛方法給父類提供了一種預設的實現,子類可以使用override重寫虛方法,虛方法不能出現在密封類 sealed 中。抽象類,不能被例項化,但可以例項化其子類的物件,抽象方法必須出現在抽象類中,抽象方法必須在子類中重寫。子類繼承抽象類,必須重寫抽象類中所有的抽象方法 除非子類也...