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

C# Keywords Series 8 interface&virtual&abstr

編輯:C#入門知識

  本文主要講述 interface 、 virtual 、 abstract、override、new(修飾符) 的使用方法和區別。     interface     interface 只能包含方法、屬性、事件和索引,實現接口的類必須實現接口成員。只提供一些方法規約,不提供主體,不能用 public 、 abstract 等修飾。請看實例:   [csharp]   interface IAnimal   {       void Eat();          void Run();          void Play();   }   class Dog:IAnimal   {       public void Eat()       {           // Eat           Console.WriteLine("Your dog is eating");       }       public void Run()        {           // Run           Console.WriteLine("Your dog is running");       }          public void Play()       {            // Play           Console.WriteLine("Your dog is playing");       }       static void Main(string[] args)       {           // 聲明一個接口實例           IAnimal animal = new Dog();              // 調用接口成員           animal.Eat();       }   }        一個接口可以從一個或多個基接口繼承。再重申下interface 和 abstract 兩者之間的區別:       1.interface 不能包含方法實現,abstract class可以包含也可以不包含。       2.interface只能繼承interface,abstract class可以繼承class或者一個或多個interface       3.interface不能包含字段,可以包含屬性,abstract class 都可以包含       4.interface不能包含構造和析構函數, abstract class都可以       5.interface支持多繼承,abstract class不支持多繼承     abstract     abstract 關鍵字用來修飾方法、類、屬性、索引和事件聲明,標記為 abstract 的抽象類的成員必須通過抽象類的派生類來實現。這裡之前說過 abstract 就不說了,給個地址 :http://blog.csdn.net/ywy0012011/article/details/8167161。     virtual     virtual 關鍵字用來修飾方法、屬性、索引和事件聲明,使它們在子類中可以被重寫。     靜態屬性使用 virtual 是錯誤的。通過使用 override 屬性聲明,可以在派生類中重寫虛擬繼承屬性。     override     override 提供從基類繼承的成員實現。不能重寫非虛方法或靜態方法,重寫的基類方法必須有 virtual 、 abstract 或 override 修飾的。override 聲明不能更改 virtual 方法的可訪問性。override 方法和 virtual 方法必須具有相同的訪問級別修飾符。     new (修飾符)     new 關鍵字可以顯示隱藏從基類繼承的成員。 一般方法,若在派生類中重寫,須使用new關鍵字。new 和 override 的區別,即重寫和隱藏的區別:     new 的用法:   [csharp]   class Circle : Shape   {       // 隱藏字段 'x'       new public static int x = 100;       static void Main()       {           // 顯示 x 新的值           Console.WriteLine(x);              // 顯示 x 的隱藏值           Console.WriteLine(Shape.x);              // 顯示非隱藏的值 y           Console.WriteLine(y);       }   }   /* Output:  100  22  55   */           override 用法 [csharp]   abstract class ShapesClass   {       abstract public int Area();   }      class Square : ShapesClass   {       int side = 0;       public Square(int n)       {           side = n;       }       public override int Area()       {           return side * side;       }       static void Main()       {  www.2cto.com         Square sq = new Square(12);           Console.WriteLine("Area of the square = {0}", sq.Area());       }   }   /* Output:   Area of the square =144   */     abstract和virtual 的區別:     1: Abstract方法只能在抽象類中聲明,虛方法則不是。       Abstract方法必須在派生類中重寫,而virtual則不必(可以override也可以不用override)   2: Abstract方法不能聲明方法實體,       abstract public void SD();       虛方法則可以   3. abstract,virtual在實現過程中需要用到new 和 override,而interface則不用

  1. 上一頁:
  2. 下一頁: