abstract public void Func(); 抽象方法不能有函數體{},派生類中必須得override重寫;其所在的類必須聲明為抽象類
abstract public class C 抽象類是無法實例化的。
virtual public void Func() 虛方法可以有函數體,可以在派生類中override重寫,也可以不重寫。
abstract public class Pet//當包含抽象方法時,必須用abstract聲明 { protected string Name;//protected 保護級別,派生類可訪問 public Pet(string name)//基類的構造函數 { Name = name; } public void PrintName() { Console.WriteLine("Print"+Name); } //virtual public void Speak() //虛方法//如果該方法夠抽象,抽象到其實體是沒有機會被用到並且都在該類的派生類中有各種不同實現的情況下,就可以改成抽象方法 //{ // Console.WriteLine("I'm "+Name); //} abstract public void Speak();//抽象方法,其所在類也得換為abstract聲明。在其派生類中必須通過override做具體實現 } public class Dog : Pet { public Dog(string name):base(name)//構造函數//用關鍵字base調用了基類的構造函數 { } new public void PrintName() { Console.WriteLine("子打印"+base.Name); } override public void Speak()//重寫基類Pet的抽象方法 { Console.WriteLine("子說" + Name); } } public class Cat : Pet { public Cat(string name):base(name)//構造函數//用關鍵字base調用了基類的構造函數 { } new public void PrintName() { Console.WriteLine("子打印" + Name); } override public void Speak()//重寫基類Pet的抽象方法 { Console.WriteLine("子說" + Name); } }