虚方法、抽象方法、接口方法

依然范特西╮ 提交于 2020-04-07 03:12:19

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

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!