概念
如果成員前面使用了abstract修飾符標識,那么該成員就被稱為抽象成員。
使用說明
1. 抽象方法只是從邏輯上對操作進行了描述,並不對操作進行具體的實現。它和虛函式不同,虛函式中可以包含具體的運算來實現指定的操作。
2. abstract修飾符能夠套用在類、方法前面,使用abstract修飾符聲明的類只能作為基類來派生出其他的類,即抽象類不能創建具體的對象類、不能產生實例。
3. 抽象方法必須在抽象類中聲明。
4. 抽象成員沒有代碼實現塊,即抽象成員後面沒有{}。
5. 抽象成員的訪問許可權不能是private。
6. 抽象方法前面不能使用static、virtual、override修飾符。
7. 抽象類可以派生出另一個抽象類。
8. 任何派生自抽象類的類必須使用override關鍵字來實現抽象類中所有的抽象成員,除非派生類本身也是抽象類。
9. abstract修飾符不能用於靜態代碼屬性。
抽象類通過派生類實現了它本身的內部邏輯功能。派生類通過override關鍵字來重載代碼屬性和方法,實現了具體的邏輯功能,即更改和獲取保護成員變數的數據。這樣在主函式中通過對派生類進行實例化,就可以套用產生的對象輸出類中保存的實際數據了。
抽象類主要套用於像各種多邊形求面積等邏輯統一但實例差異比較大的環境中。
示例
using System; //引入命名空間
public abstract class A //定義抽象類A
{
/*
* 聲明抽象成員,必須在抽象類中。
* 聲明抽象成員OutPut(),沒有實現方法。
*/
public abstract void OutPut();
}
class Test : A //定義派生類Test,基類為A
{
public override void OutPut() //用override來重新定義抽象成員,對抽象方法實例化
{
Console.WriteLine("This is a abstract!");
}
static void Main()
{
Test t = new Test(); //
t.OutPut(); //用實例化對象來引用OutPut()
}
}
輸出結果:This is a abstract!