zoukankan      html  css  js  c++  java
  • 深入了解接口

    首先我们要知道什么是接口?

      接口是组件之间的协议,描述了组件对外提供的服务。从技术上讲接口是一组包含了函数型方法的数据结构。

    通俗理解:就是飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类。

    接口就是为了约束方法的格式(参数和返回值类型)而存在

    一个接口最好只能做一件事

    为什么要使用接口?

    因为子类只有一个直接父类,即子类只能继承一个父类  为了能让子类实现多个方法模型,所有微软引入了接口的用法  一个类可以实现多接口

    接口可以实现多继承,弥补单继承的缺陷。

    什么情况下要使用接口?

    在没有继承关系的多个类中,实现多台,可以使用接口

    namespace 接口简单实现多态
    {
        //定义一个普通类  鸟类  实现 IFly接口
       public  class Bird:IFly
        {
           //注意 !!
           //必须实现该接口的所有方法
            public void Say()
            {
                Console.WriteLine("我是鸟,我会飞!");
            }
        }
    }
    namespace 接口简单实现多态
    {
        //定义一个飞机类 实现 IFly接口
       public  class Prin:IFly
        {
            public void Say()
            {
                Console.WriteLine("我是飞机");
            }
        }
    }
    namespace 接口简单实现多态
    {
        class Program
        {
            static void Main(string[] args)
            {
                //定义一个接口类型的数组  用来保存 实现该接口的 类  可以理解为里氏替换原则 父类变量指向子类对象只不过这里换成了接口
                IFly[] ifly = 
                {
                    new Bird(), 
                    new Prin()
                };
                //遍历数组
                foreach (IFly items in ifly)
                {
                    //输出接口中的方法    会自动调用该子类的方法
                    items.Say();
                }
                Console.ReadKey(); 
            }
        }
    }

    使用接口实现多继承

    namespace 深入了解接口
    {
        //定义一个IEat接口
       public  interface IEat
        {
           void Eat();
        }
    }
    namespace 深入了解接口
    {
        //接口继承接口  
       public  interface IFly:IEat
        {
           void fly();
        }
    }
    namespace 深入了解接口
    {
        //鸟可以实现多个接口 
       public  class Bird:IFly
        {
            public void fly()
            {
                Console.WriteLine("我能飞!");
            }
    
            public void Eat()
            {
                Console.WriteLine("我能吃");
            }
        }
    }
    namespace 深入了解接口
    {
        class Program
        {
            static void Main(string[] args)
            {
                IFly fly = new Bird();
                fly.Eat();
                fly.fly();
                Console.ReadKey();
            }
        }
    }
    {
        //定义一个飞机类 实现 IFly接口
       public  class Prin:IFly
        {
            public void Say()
            {
                Console.WriteLine("我是飞机");
            }
        }
    }
  • 相关阅读:
    【赛前集训】20190902
    【2019csp模拟】树上相交路径
    如何给网站添加SSL证书(西部数码)?
    如何将页面blob类型的视频链接下载下来?
    VUE笔记:运行Vue报错error in ./*xxxxx&lang=scss Syntax Error: TypeError: this.getOptions is not a function
    VUE笔记:Failed to resolve loader: sass-loader
    VUE笔记:VScode(英文版)快速生成VUE模板的设置
    VUE笔记:运行VUE报错 Node Sass version 6.0.1 is incompatible with ^4.0.0.
    VUE笔记:yarn add sass-loader node-sass -dev
    Excel多条件求和:SUM和SUMIFS的综合使用
  • 原文地址:https://www.cnblogs.com/shuaibin/p/5389310.html
Copyright © 2011-2022 走看看