輕松進修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#法式設計有所贊助。