在C#中,C#容許把類和函數聲明爲abstract。ide
抽象類不能實例化,抽象類能夠包含普通函數和抽象函數,抽象函數就是隻有函數定義沒有函數體。顯然,抽象函數自己也是虛擬的virtual(只有函數定義,沒有函數實現)。函數
類是一個模板,那麼抽象類就是一個不完整的模板,咱們不能使用不完整的模板去構造對象。spa
先聲明一個抽象類Total:code
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Abstract 7 { 8 abstract class Total 9 { 10 private float speed; 11 public void Eat() 12 { 13 } 14 15 public abstract void Fly(); 16 //一個類中若是有一個抽象方法,那麼這個類必須被定義爲一個抽象類 一個抽象類就是一個不完整的模板,咱們不能夠用抽象類去實例化構造對象 17 } 18 }
而後再聲明這個抽象類的子類Bird:對象
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Abstract 7 { 8 class Bird:Total//咱們成立一個抽象類的時候必須去實現抽象方法,給出方法體 9 { 10 public override void Fly()//使用抽象方法時須要在返回類型前添加 override 複寫 11 { 12 Console.WriteLine("鳥在飛"); 13 } 14 } 15 }
咱們在Program類中實現抽象類中的方法:blog
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Abstract 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Total b = new Bird();//咱們能夠利用抽象類去聲明對象,但咱們必須利用抽象類的子類去構造 Bird b=new Bird(); 13 b.Fly(); 14 Console.ReadKey(); 15 } 16 17 18 } 19 }