抽象方法和虛方法 與設計模式

2021-07-02 14:40:40 字數 1448 閱讀 8310

抽象方法和虛方法是什麼?先寫一段**看看他們倆的區別。

抽象方法使用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 中。抽象類,不能被例項化,但可以例項化其子類的物件,抽象方法必須出現在抽象類中,抽象方法必須在子類中重寫。子類繼承抽象類,必須重寫抽象類中所有的抽象方法 除非子類也...