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

      

  • 相关阅读:
    【Quartz】常用方法的使用方式(三)
    【Quartz】实现接口封装化(二)
    【Quartz】定时器初步实验(一)
    数据库和ado连接语句的使用总结
    PMP 德尔菲技术
    java 事务解释。
    防盗链--解释
    java月利率计算(等额本息贷款)
    java 日志的数据脱敏
    MDC 输出线程信息帮助定位问题
  • 原文地址:https://www.cnblogs.com/mili3/p/7612353.html
Copyright © 2011-2022 走看看