zoukankan      html  css  js  c++  java
  • 虚方法、抽象方法、接口方法

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

      

  • 相关阅读:
    matlab curve fitting tool
    simulink model configuration parameter
    MATLAB小知识
    电源噪声与纹波
    各种“地”—— 各种“GND”
    一个不错的充电方案论坛:
    pre -regulator 前端稳压器
    LT4020替代方案
    power delivery功率输出
    LTC4020锂电池充电模块开发记录
  • 原文地址:https://www.cnblogs.com/mili3/p/7612353.html
Copyright © 2011-2022 走看看