1. 程式人生 > >抽象類和虛方法、base關鍵字

抽象類和虛方法、base關鍵字

nbsp 完成 多態性 com soft 共享 log rac 返回

微軟官方文檔:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members

抽象類和類成員

通過在類定義前面放置關鍵字 abstract,可以將類聲明為抽象類。 例如:

public abstract class A
{
    // Class members here.
}

抽象類不能實例化。 抽象類的用途是提供一個可供多個派生類共享的通用基類定義例如,類庫可以定義一個抽象類,將其用作多個類庫函數的參數,並要求使用該庫的程序員通過創建派生類來提供自己的類實現。

抽象類也可以定義抽象方法。 方法是將關鍵字 abstract 添加到方法的返回類型的前面。 例如:


public abstract class Animal
{
    public abstract void Call();   //無方法體
    public virtual void Bak()   //有方法體
    {
        Console.WriteLine("jiaojiao");
    }
    public Animal(int id)
    {
        Console.WriteLine(id);
    }
 
}
 
public class Dog : Animal
{
    
    public override void Call()   //重寫抽象方法
    {
        
    }
    public override void Bak() //重寫虛方法
    {
        Console.WriteLine("goujiao");
        // base.Bak();
    }
    public Dog(int id) :base(id) //調用父類的Animal.Animal(id) 方法
    {
 
    }
 
}
 

虛方法

在 C# 中,派生類可以包含與基類方法同名的方法。

  • 基類方法必須定義為 virtual。

  • 如果派生類中的方法前面沒有 new 或 override 關鍵字,則編譯器將發出警告,該方法將如同存在 new 關鍵字一樣執行操作。

  • 如果派生類中的方法前面帶有 new 關鍵字,則該方法被定義為獨立於基類中的方法。

  • 如果派生類中的方法前面帶有 override 關鍵字,則派生類的對象將調用該方法,而不是調用基類方法。

  • 可以從派生類中使用 base 關鍵字調用基類方法。

base關鍵字

base其實最大的使用地方在面向對象開發的多態性上,base可以完成創建派生類實例時調用其基類構造函數或者調用基類上已被其他方法重寫的方法

關於base base 關鍵字用於從派生類中訪問基類的成員:
調用基類上已被其他方法重寫的方法。
指定創建派生類實例時應調用的基類構造函數。
基類訪問只能在構造函數、實例方法或實例屬性訪問器中進行。

原文鏈接:https://www.cnblogs.com/eedc/p/6343201.html

抽象類和虛方法、base關鍵字