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();
}
}