实现的一个DEMO程序,见代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { //-------虚方法--------------- Fruit fruit = new Peach(); //Fruit fruit = new Fruit(); Console.WriteLine( fruit.Juice()); //----------------------------------- //------------隐藏方法--------------- Peach fruit2 = new Peach(); //Fruit fruit2 = new Apple(); Console.WriteLine(fruit2.LL()); //------------------------------------- //-------------抽象方法------------------------ //因为抽象类无法实例化,所以抽象方法没有办法被调用,也就是说抽象方法永远不可能被实现。 //CC bB = new CC(); BB bB = new BB(); Console.WriteLine(bB.area()); //----------------------------------------------- Console.ReadKey(); } #region--------------虚方法和隐藏方法类-------------------------- class Fruit { public virtual string Juice()//虚方法(主类使用virtual关键字) { string juice = "null"; return juice; } public string LL()//隐藏方法 { string ll = "null"; return ll; } } class Apple : Fruit { public override string Juice()//虚方法(副类使用override关键字) { string juice = "applejuice"; return juice; } public new string LL()//隐藏方法(副类使用new关键字) { string ll = "applell"; return ll; } } class Peach : Fruit { public override string Juice()///虚方法(副类使用override关键字) { string juice = "Peachjuice"; return juice; } public new string LL()//隐藏方法(副类使用new关键字) { string ll = "peachll"; return ll; } } class Pear : Fruit { public override string Juice()//虚方法(副类使用override关键字) { string juice = "Pearjuice"; return juice; } public new string LL()//隐藏方法(副类使用new关键字) { string ll = "pearll"; return ll; } } #endregion #region -------------------抽像方法类------------------------ public abstract class AA//抽象类(配合abstract字段使用) { public abstract string area();//抽象方法(主类配合abstract字段使用) } public class BB : AA { public override string area()//抽象方法(副类配合override字段使用实现抽象方法) { string ar = "BB"; return ar; } } public class CC : AA { public override string area()//抽象方法(副类配合override字段使用实现抽象方法) { string ar = "CC"; return ar; } } #endregion } }