輕松進修C#的籠統類。本站提示廣大學習愛好者:(輕松進修C#的籠統類)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松進修C#的籠統類正文
在C#說話中有一種特別的基類,那就是籠統類。有時刻,基類其實不與詳細的事物接洽,而是只是表達一種籠統的概念,用於為它的派生類供給一個公共的界面。為此,C#中引入了籠統類和籠統辦法的概念。
籠統類概述
籠統類供給多個派生類同享基類的公共界說,它既可以供給籠統辦法,也能夠供給非籠統辦法。籠統類不克不及實例化,必需經由過程繼續由派生類完成其籠統辦法,是以對籠統類不克不及應用new症結字,也不克不及被密封。假如派生類沒有完成一切的籠統辦法,則該派生類也必需聲明為籠統類。別的,完成籠統辦法由override辦法來完成。
籠統類應用abstract潤飾符,對籠統類的應用有幾點劃定:
C#中聲明籠統類時須要應用abstract症結字,語法格局為:
拜訪潤飾符 abstract class 類名:基類或接口
{
類成員;
}
聲明籠統類時,除abstract症結字,class症結字和類名外,其他的都是可選項。
籠統辦法概述
因為籠統類自己表達的是籠統的概念,是以類中的很多辦法其實不必定要有詳細的完成,而只是留出一個接口來作為派生類重載的界面。
一個辦法聲明中假如加上abstract潤飾符,此辦法就被稱為籠統辦法。假如一個辦法被聲明也是籠統的,那末該辦法默許也是一個虛辦法。現實上,籠統辦法是一個新的虛辦法,它不供給詳細的辦法完成法式,而非虛派生類請求經由過程重載為繼續的虛辦法供給本身的完成,而籠統辦法則不包括詳細的完成內容,所以辦法聲明的履行體只要一個分號“;”。用戶只能在籠統類中聲明籠統辦法。對籠統辦法,不克不及再應用static或virtual潤飾符,並且辦法不鞥完成由任何可履行法式,哪怕只是一對年夜括號中央家一個分號“;"都不許可湧現,只須要給出辦法的原型便可以了。
聲明籠統辦法時須要留意幾點:
籠統辦法聲明引入了一個新辦法,但不供給該辦法的完成,因為籠統辦法不供給任何現實完成,是以籠統辦法的辦法體中只包括一個分號。當從籠統類派生一個非籠統類時,須要在飛籠統類中重寫籠統辦法,以供給詳細籠統辦法的完成,重寫籠統辦法時應用override症結字。
上面就來舉兩個例子:
<span >using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace qq
{
public abstract class A//籠統類
{
public abstract void add(int a, int b);//籠統辦法
}
public class B : A//派生類B
{
public override void add(int a, int b)//重寫籠統辦法
{
int sum = a + b;
Console.WriteLine(sum);
}
}
public class C : A//派生類C
{
public override void add(int a, int b)//重寫籠統辦法
{
int sum = System.Math.Abs(a + b);//取兩個數的和的相對值
Console.WriteLine(sum);
}
}
class Program
{
static void Main(string[] args)
{
B p = new B();
p.add(1,-2);
C q = new C();
q.add(1,-2);
Console.ReadLine();
}
}
}
</span>
很輕易曉得輸入的成果為:-1和1
<span >using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace qq
{
public class abtext
{
public virtual void output()
{
Console.WriteLine("這是虛辦法");
}
}
abstract public class class1 : abtext
{
public abstract override void output();
}
public class class2 : class1
{
public override void output()
{
Console.WriteLine("這是一個新的辦法");
}
}
class Program
{
static void Main(string[] args)
{
class2 c1 = new class2();
c1.output();
Console.ReadLine();
}
}
}
</span>
很輕易曉得成果為:這是一個新的辦法
文章其實很短,然則涵蓋的內容很周全,最初經由過程兩個例題對C#的籠統類停止說明,願望對年夜家進修C#法式設計有所贊助。