• C#接口实现多态


    我比较喜欢对感兴趣的理论进行反复的理解甚至理解背诵下来,接下来再复习一下什么叫多态(哈哈哈)

    多态:在同一粒度视图下对相同类型的事物不做区别的统一处理

    接下来看一下接口和引擎类是如何实现多态的:

    一、

    1、创建了一个接口类:IWeapon

    1 public interface IWeapon
    2     {
    3         void Fire();
    4     }

    2、声明几个类去实现这个接口(展示描述的词语是我老师的佳作,我可是软妹子(哈哈哈))

     1  public class Gun : IWeapon
     2     {
     3         public void Fire()
     4         {
     5             Console.WriteLine("pa peng pa peng");
     6         }
     7     }
     8 
     9     public class Sword : IWeapon
    10     {
    11         public void Fire()
    12         {
    13             Console.WriteLine("七剑下天山");
    14         }
    15 
    16     }
    17 
    18     public class Tank : IWeapon
    19     {
    20         public void Fire()
    21         {
    22             Console.WriteLine("压死你");
    23         }
    24     }
    25 
    26     public class Xiaomugun : IWeapon
    27     {
    28         public void Fire()
    29         {
    30             Console.WriteLine("扎死你");
    31         }
    32     }

    3、创建一个引擎类:Engine(以接口为参数)

    1 public static void Play(IWeapon w)
    2         {
    3             w.Fire();
    4         }

    4、在程序入口处调用引擎类,实现多态

    1 InterfaceDemo.Engine.Play(new InterfaceDemo.Gun());
    2 InterfaceDemo.Engine.Play(new InterfaceDemo.Sword());
    3 InterfaceDemo.Engine.Play(new InterfaceDemo.Tank());
    4 InterfaceDemo.Engine.Play(new InterfaceDemo.Xiaomugun());

    上面调用的结果是:

    1 pa peng pa peng
    2 七剑下天山
    3 压死你
    4 扎死你

    顺便复习一下抽象类和接口的一点小区别:

    一个类可以去实现多个接口,表示这个类的对象可以做什么

    一个类只能继承一个抽象类,相当于派生类是一个抽象类的意思,从属关系比较紧凑

  • 相关阅读:
    未设置BufferSize导致FTP下载速度过慢的问题
    Ant Problem: failed to create task or type foreach 问题
    关于iOS Tabbar的一些设置
    eeplat开发平台概念理解
    swift菜鸟入门视频教程-05-控制流
    iOS多线程与网络开发之多线程概述
    hdu 1686 Oulipo
    记一次理想浪漫的毕旅
    LeetCode:Subsets II
    DNA分子结构3D模型
  • 原文地址:https://www.cnblogs.com/fllowerqq/p/10797522.html
Copyright © 2020-2023  润新知