程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> virtual和abstract的區別和聯系,virtualabstract

virtual和abstract的區別和聯系,virtualabstract

編輯:C#入門知識

virtual和abstract的區別和聯系,virtualabstract


壹. 相同

他們有些相似。有些場景用哪個都行!

 

1. 修飾父類、讓子類重寫

   virtual和abstract都是用來修飾父類的,通過覆蓋父類的定義,讓子類重新定義。

 

2. 都用必須public

  如果用來修飾方法,前面必須添加public,要不然就會出現編譯錯誤:虛擬方法或抽象方法是不能私有的。畢竟加上virtual或abstract  就是讓子類重新定義的,而private成員是不能被子類訪問的。

 

貳. 區別

但是它們的區別很大。(virtual是“虛擬的”,abstract是“抽象的")。

 

1. 必須實現、必須沒有實現 指父類中

    virtual修飾的方法必須有實現(哪怕是僅僅添加一對大括號),而abstract修飾的方法一定不能實現。如對於virtual修飾的方法如果沒有實現則會報錯。

 

2.可以重寫、必須重寫

    virtual可以被子類重寫,而abstract必須被子類重寫,

 

3.必須在抽象類

    如果類成員被abstract修飾,則該類前必須添加abstract,因為只有抽象類才可以有抽象方法。

 

4.無法實例化

    無法創建abstract類的實例,只能被繼承無法實例化,強行new出來 將出現編譯錯誤:抽象類或接口不能創建實例。

 

 

補充: C#中如果要在子類中重寫方法,必須在父類方法前加virtual,在子類方法前添加override,這樣就避免了程序員在子類中不小心重寫了父類方法。

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved