• 深入了解接口


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

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

    通俗理解:就是飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是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("我是飞机");
            }
        }
    }
  • 相关阅读:
    JSON以及Java转换JSON的方法(前后端经常使用处理方法)
    让cocos2dx支持并通过arm64 编译
    matlab7安装后的常见问题
    Open SSH原理
    Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization
    12C -- 配置EM Express的端口
    ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE
    ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
    11g新特性-SQL Plan Management
    11g新特性-自动sql调优(Automatic SQL Tuning)
  • 原文地址:https://www.cnblogs.com/shuaibin/p/5389310.html
Copyright © 2020-2023  润新知