程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 輕松進修C#的籠統類

輕松進修C#的籠統類

編輯:C#入門知識

輕松進修C#的籠統類。本站提示廣大學習愛好者:(輕松進修C#的籠統類)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松進修C#的籠統類正文


在C#說話中有一種特別的基類,那就是籠統類。有時刻,基類其實不與詳細的事物接洽,而是只是表達一種籠統的概念,用於為它的派生類供給一個公共的界面。為此,C#中引入了籠統類和籠統辦法的概念。
       籠統類概述
       籠統類供給多個派生類同享基類的公共界說,它既可以供給籠統辦法,也能夠供給非籠統辦法。籠統類不克不及實例化,必需經由過程繼續由派生類完成其籠統辦法,是以對籠統類不克不及應用new症結字,也不克不及被密封。假如派生類沒有完成一切的籠統辦法,則該派生類也必需聲明為籠統類。別的,完成籠統辦法由override辦法來完成。
       籠統類應用abstract潤飾符,對籠統類的應用有幾點劃定:

  •        1籠統類只能作為其他類的基類,不克不及直接被實例化,並且對籠統類不克不及應用new操作符。籠統類假如含有籠統的變量或值,則它們要末是null類型,要末包括了對非籠統類的實例的援用。
  •        2籠統類許可包括籠統成員,固然這不是必需的。
  •        3籠統類不克不及同時又是密封的。
  •        4假如一個非籠統類從籠統類中派生,則其必需經由過程重載來完成一切繼續而來的籠統成員。

       C#中聲明籠統類時須要應用abstract症結字,語法格局為:
      拜訪潤飾符  abstract  class 類名:基類或接口
      {
              類成員;
       }
       聲明籠統類時,除abstract症結字,class症結字和類名外,其他的都是可選項。
       籠統辦法概述
       因為籠統類自己表達的是籠統的概念,是以類中的很多辦法其實不必定要有詳細的完成,而只是留出一個接口來作為派生類重載的界面。
       一個辦法聲明中假如加上abstract潤飾符,此辦法就被稱為籠統辦法。假如一個辦法被聲明也是籠統的,那末該辦法默許也是一個虛辦法。現實上,籠統辦法是一個新的虛辦法,它不供給詳細的辦法完成法式,而非虛派生類請求經由過程重載為繼續的虛辦法供給本身的完成,而籠統辦法則不包括詳細的完成內容,所以辦法聲明的履行體只要一個分號“;”。用戶只能在籠統類中聲明籠統辦法。對籠統辦法,不克不及再應用static或virtual潤飾符,並且辦法不鞥完成由任何可履行法式,哪怕只是一對年夜括號中央家一個分號“;"都不許可湧現,只須要給出辦法的原型便可以了。
       聲明籠統辦法時須要留意幾點:     

  • 1籠統辦法必需聲明在籠統類中。
  • 2聲明籠統辦法時,不克不及應用virtual,static和private潤飾符。

       籠統辦法聲明引入了一個新辦法,但不供給該辦法的完成,因為籠統辦法不供給任何現實完成,是以籠統辦法的辦法體中只包括一個分號。當從籠統類派生一個非籠統類時,須要在飛籠統類中重寫籠統辦法,以供給詳細籠統辦法的完成,重寫籠統辦法時應用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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved