1.virtual方法(虚方法)
virtual方法用于在基类中修饰子类,会遇到下面2种情况:
情况1:子类没有重写,则子类调用的是基类的方法。
情况2:子类重写了,则子类调用的重写的方法。
2. abstract方法(抽象方法)
抽象方法只是可以在抽象类中出现,并且没有具体的实现。抽象类必须在派生类中通过override实现。派生类必须全部实现父类的方法,否则派生类也需要定义为抽象类。
3.接口方法
接口方法必须出现在接口中,没有方法的实现,只有方法名称,参数和返回值。派生类必须全部实现父类方法。
下面定义几个类具体实现以下:
public abstract class Animal { public abstract void Eat(); public virtual void Run() { Console.WriteLine("小动物当然会跑了.."); } } public class Cat:Animal,IAction { public override void Eat() { Console.WriteLine("猫咪吃鱼"); } public void Fly() { Console.WriteLine("猫咪会飞吗?你是不是傻.."); } } interface IAction { void Fly(); } public abstract class Plane { public abstract void AddOil(); } public class Plane747:Plane,IAction { public override void AddOil() { Console.WriteLine("波音747 应该加机油了奥"); } public void Fly() { Console.Write("我是波音747,当然会飞罗..你以为我像猫咪那么笨.."); } } public class HelloWorld { public virtual void Hello() { Console.WriteLine("Hello World,没有重写"); } } public class ExtendHelloWorld1:HelloWorld { } public class ExtendHelloWord2 : HelloWorld { public override void Hello() { Console.WriteLine("Hello World 怎么够,要Hello All The World"); } } class Program { static void Main(string[] args) { new ExtendHelloWorld1().Hello(); new ExtendHelloWord2().Hello(); Console.WriteLine("----------------------------------"); new Cat().Eat(); new Cat().Fly(); new Cat().Run(); Console.WriteLine("----------------------------------"); new Plane747().AddOil(); new Plane747().Fly(); Console.ReadLine(); } }