91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#之淺談虛方法和抽象方法的區別

發布時間:2020-07-19 13:43:51 來源:網絡 閱讀:1370 作者:程沐喆 欄目:編程語言

抽象類:
有時我們表達一些抽象的東西,它是一種概括,不需要它成為一種實體,所以面向對象便有了抽象類。
具體來講:一個員工,它屬于一個公司,但是公司只是一個名稱,我們不需要它成為一個實體,所以公司就是一個抽象類。
何時必須聲明一個類為抽象類?(面試題)
當這個類中包含抽象方法時,或是該類并沒有完全實現父類的抽象方法時。
抽象類的特點:
抽象類使用abstract修飾符,并且它只能是用作基類。
抽象類不能實例化,當使用new運算符對其實例時會出現編譯錯誤。
允許(但不要求)抽象類包含抽象成員。(非抽象類不能包括抽象成員)
抽象類不能被密封。
抽象類可以被抽象類所繼承,結果仍是抽象類。

介紹一下這兩種方法:

一、Virtual方法(虛方法)

 virtual 關鍵字用于在基類中修飾方法。virtual的使用會有兩種情況:

 情況1:在基類中定義了virtual方法,但在派生類中沒有重寫該虛方法。那么在對派生類實例的調用中,該虛方法使用的是基類定義的方法。

 情況2:在基類中定義了virtual方法,然后在派生類中使用override重寫該方法。那么在對派生類實例的調用中,該虛方法使用的是派生重寫的方法。

二、Abstract方法(抽象方法)

 abstract關鍵字只能用在抽象類中修飾方法,并且沒有具體的實現。抽象方法的實現必須在派生類中使用override關鍵字來實現。請務必將抽象方法放在抽象類中。派生類必須全部實現父類的方法。

這是我自己總結的他們的簡單的區別:

抽象方法的使用:

父類:public abstract void SayHi();

子類:使用override重寫

public override void SayHi()

    {
        Console.WriteLine("我的名字是: {0} ,年齡是{1},愛好有{2}",Name,Age,Hoddy);
    }

在program里:

List<Person> lists = new List<Person>();
for (int i = 1; i <=5; i++)
{
Student stu = new Student("cmz" + i.ToString(), 20 + i, "愛好無");
lists.Add(stu);
Teacher tea = new Teacher("程沐喆" + i.ToString(), 30 + i, 5 + i);
lists.Add(tea);
}

        for (int i = 0; i < lists.Count; i++)
        {

            (lists[i] as Person).SayHi();
        }

        Console.Read();

虛方法的使用:

1.在父類里寫SayHi方法

private Genders gender;
public Genders Gender
{
get { return gender; }
set { gender = value; }
}

    public virtual void SayHi()
    {
        string message;
        string sex;
        switch (this.gender)
        {
            case Genders.Female:
                sex = "女士";
                break;
            case Genders.Male:
                sex = "先生";
                break;
            default:
                sex = "外星人";
                break;
        }
        message = string.Format(
            "大家好,我是 {0} {1}。我今年 {2} 歲了。!",
            this.Name, sex, this.Age
        );
        MessageBox.Show(message);
    }

2.在student里使用override重寫:

override public void SayHi()
{
string message = string.Format(
"大家好,我是 {0} 同學,今年 {1} 歲了,我喜歡 {2}!",
base.Name, base.Age, this.hobby
);
MessageBox.Show(message);
}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镶黄旗| 平武县| 天津市| 鲁山县| 山阳县| 太白县| 桓台县| 泰安市| 隆化县| 织金县| 龙海市| 阿勒泰市| 河间市| 大邑县| 德兴市| 澜沧| 光山县| 弥渡县| 阳泉市| 平江县| 汕头市| 仁怀市| 中江县| 天柱县| 千阳县| 泸州市| 潮安县| 金山区| 大同市| 宜川县| 凌云县| 神池县| 香格里拉县| 宿迁市| 贡山| 茶陵县| 江山市| 商南县| 监利县| 关岭| 孟津县|