国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

對抽象類和虛方法的總結【轉】

2019-11-14 16:32:43
字體:
來源:轉載
供稿:網友

抽象類定義:



它的作用就是產生子類的同時給于子類一些特定的屬性和方法。
abstract修飾符可以和類、方法、屬性、索引器及事件一起使用。在類聲明中使用abstract修飾符以指示某個類只能是其他類的基類。標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。

特性:
1.抽象類不能被實例化;
2.抽象類可以包含抽象方法和抽象訪問器;
3.不能用sealed修飾符修改抽象類,這意味著抽象類不能被繼承;
4.從抽象類派生的飛抽象類必須包括繼承的所有抽象方法和抽象訪問器的實現。

總結:
~抽象方法是隱式的虛方法;
~只容許在抽象類中使用抽象方法聲明;
~因為抽象方法聲明不提供實際的實現,所以沒有方法體;方法聲明只是以一個分號結束,并且在簽名后沒有大括號“{}”,實現由一個重方法提供,此重方法是非抽象類的成員;
~在抽象方法聲明中使用static或virtual修飾符是錯誤的;
~除了在聲明和調用語法上不同外,抽象屬性的行為與抽象方法一樣;
~在靜態屬性上使用absteact修飾符是錯誤的;

~在派生類中,通過包括使用override修飾符的屬性聲明,可以重寫抽象的繼承屬性。

 

using System;abstract class A{    public abstract void F();    PRotected int _x;    public abstract int X    {        get;        set;    }}class B:A{    public override void F()    {            }    public override int X    {        get{return _x;}        set{_x=value;}    }}class Test{    static void Main()    {        B b=new B();        b.X=10;        Console.Write(b.X);    }}
View Code

虛方法定義:

 

using System;class A{    public void F()    {        Console.WriteLine("A.F");    }    public virtual void G()    {        Console.WriteLine("A.G");    }}class B : A{    new public void F()    {        Console.WriteLine("B.F");    }    public override void G()    {        Console.WriteLine("B.G");    }}class Test{    static void Main()    {        B b = new B();        A a = b;        a.F();        b.F();        a.G();        b.G();    }}//輸出是:A.F   B.F  B.G  B.G
View Code

 



簡單的說,虛方法就是可以被子類重寫的方法,如果子類重寫了虛方法,那么運行時將使用重寫后的邏輯,如果沒有重寫,則使用父類中虛方法的邏輯;
virtual關鍵字用于修飾方法、屬性、索引器或事件聲明,并且允許在派生類中重寫這些對象。

其實最重要的就是抽象方法不能實例化,要子類必須強制性的覆蓋它的方法 。而虛方法則是提供了選擇,可以覆蓋可以不覆蓋,繼承基類中的虛方法。

總結比較如下:

抽象方法和虛方法的區別 :

 ~抽象方法和虛方法的區別在于:虛擬方法有一個實現部分,并為派生類提供了覆蓋該方法的選項,相反,抽象方法沒有提供實現部分,強制派生類覆蓋方法(否則 派生類不能成為具體類);
~abstract方法只能在抽象類中聲明,虛方法則不是;
~abstract方法必須在派生類中重寫,而virtual則不必;
~abstract方法不能聲明方法實體,虛方法則可以。

 

轉自 Peterluo的技術博客


上一篇:洗牌游戲

下一篇:【C#】權限修飾符

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽阳市| 茂名市| 平泉县| 临沂市| 峨山| 瑞丽市| 黎平县| 嘉义市| 新建县| 高雄市| 黄大仙区| 新郑市| 岚皋县| 麻栗坡县| 新巴尔虎右旗| 富平县| 汉中市| 文化| 尚义县| 图片| 梁山县| 栾川县| 集安市| 宜春市| 嘉兴市| 房山区| 太谷县| 错那县| 宜兴市| 海盐县| 西昌市| 陵水| 甘谷县| 宁安市| 科技| 高碑店市| 长治市| 册亨县| 永和县| 任丘市| 师宗县|