using System; using System.Collections.Generic; using System.Text; namespace V5._类的多态 { class Program { //A. 虚方法 将父类的方法标记为虚方法,使用关键字 virtual,此方法在子类可以重写,(使用关键字 override) //B. 抽象类与抽象方法 如果我们不需要使用父类创建对象, // 它的存在只是为供子类继承,可以将父类写成抽象(关键字 abstract ) 类,将父类方法写成抽象方法, // 子类中的方法扔用关键字override重写 //C. 接口实现 static void Main(string[] args) { //A虚方法 //Clerk myClerk = new Clerk(); //ProjectManager myPM = new ProjectManager(); ////声明有关 Clerk 的数组 //Clerk[] clerk ={ myClerk, myPM }; //foreach (Clerk outclerk in clerk) { // outclerk.WorkPlan(); //} //B 抽象类与抽象方法 //抽象类是不允许创建实例的 Drink myMilk = new Milk (); Drink myTea = new Tea(); Drink[] drink ={ myMilk, myTea }; foreach (Drink outdrink in drink) { outdrink.drink(); } Console.ReadKey(); } } } using System; using System.Collections.Generic; using System.Text; namespace V5._类的多态 { class Clerk { //基类 //需方法 public virtual void WorkPlan() { Console.WriteLine("我是职员,我需要工作计划"); } } } using System; using System.Collections.Generic; using System.Text; namespace V5._类的多态 { //abstract 抽象类 abstract class Drink { public abstract void drink(); //利用抽象来实现,类抽象化,方法抽象化,并且方法中不能有方法体{} //{ // Console.WriteLine("我是饮料我可以解渴!"); //} } } using System; using System.Collections.Generic; using System.Text; namespace V5._类的多态 { class Milk : Drink { //基类drink()抽象类 override 重写 public override void drink() { Console.WriteLine("我是牛奶我可以解渴!"); } } } using System; using System.Collections.Generic; using System.Text; namespace V5._类的多态 { class Tea : Drink { //基类drink()抽象类 override 重写 public override void drink() { Console.WriteLine("我是茶我可以解渴!"); } } } |
|
来自: 时间剧毒 > 《第十章:接口、抽象与密封》