抽象方法和虛方法是什麼?先寫一段**看看他們倆的區別。
抽象方法使用abstract關鍵字;虛方法使用virtaul關鍵字。
//抽象方法
public abstract class test*****
//虛方法
public class test*****
}
通過這個非常小的例子明白兩個方法的區別有:
抽象方法:
1、只容許在抽象類中使用抽象方法宣告;
2、abstract修飾符可以和類、方法、屬性、索引器及事件一起使用;
3、抽象方法宣告不提供實際的實現,所以沒有方法體;
4、抽象方法宣告中使用static或virtual修飾符是錯誤的;
虛方法:
1、虛方法宣告的時候必須有實現部分,子類可以重寫邏輯也可以繼續使用虛方法的邏輯;
2、virtual關鍵字用於修飾方法、屬性、索引器或事件宣告;
兩種方法相同之處有:都可以實現多型,具體例子看下面的兩個模式。重寫他們的時候都是用override。
模板方法模式:
class test*****
public virtual string answer1()
}
class studenta:test*****
}
static void main(string args)
觀察者模式:
abstract class subject
public void detach(observer observer)
public void notify() }
}
abstract class observer
class concretesubject:subject
set} }
class concreteobserver:observer
public override void update() //重寫方法
的新狀態是",name,observerstate);
} public concretesubject subject
set} }
static void main(string args)
總結:抽象方法本身不是真實的方法體,如果不在子類中實現這個方法,就可當他不存在,而且只能在抽象類中宣告這個方法;而虛方法則不是,它可以有自己的邏輯結構,子類可以選擇覆蓋或者直接使用父類的方法
設計模式 抽象方法和虛方法的區別
只能定義在抽象類中 方法的修飾符不能被private virtual static 修飾 抽象方法如下 public abstract class people 宣告乙個抽象類 public class student people 繼承抽象類 public class program 總結 1 抽...
抽象方法與虛方法
在物件導向程式設計語言中抽象方法指一些只有方法宣告,沒有具體方法體的方法。抽象方法一般存在於抽象類或介面中。在c 中,抽象方法具有以下特性 抽象方法是隱式的virtual方法 只允許在抽象類中使用抽象方法宣告 因為抽象方法不提供實現,所以沒有方法體 方法宣告只是以乙個分號結束,並且在簽名後沒有大括號...
虛方法與抽象方法
虛方法 virtual,虛方法給父類提供了一種預設的實現,子類可以使用override重寫虛方法,虛方法不能出現在密封類 sealed 中。抽象類,不能被例項化,但可以例項化其子類的物件,抽象方法必須出現在抽象類中,抽象方法必須在子類中重寫。子類繼承抽象類,必須重寫抽象類中所有的抽象方法 除非子類也...