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

    首先我们要了解我们为什么要实现接口?

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

    第二:提高了程序的扩展性和降低系统间的耦合性  

    第三:可以规定方法的形式 和 规范

                                      定义接口的方法如下:

    namespace 接口简单实现多态
    {
        //定义接口的方法   把Class关键字换成 interface 关键字
       public  interface IFly
        {
           //接口中定义方法的注意点
           //01  方法不能有方法体(也就是不能实现)
           //02  C#中方法不能有修饰符修饰  (微软系统内部会自动增加一个public 修饰符)
           //03  C#接口中只能定义方法而不能定义字段  (Java可以定义字段,但是必须是静态常量字段)
            void Say();
        }
    }

                                         如何实现接口?

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

    namespace 接口简单实现多态

    {
        //定义一个飞机类 实现 IFly接口
       public  class Prin:IFly
        {
            public void Say()
            {
                Console.WriteLine("我是飞机");
            }
        }
    }

  • 相关阅读:
    asp.net core 操作误区
    asp.net core 通过ajax上传图片及wangEditor图片上传
    asp.net core 通过ajax调用后台方法(非api)
    使用 IIS 在 Windows 上托管 ASP.NET Core
    asp.net core 2.0 api ajax跨域问题
    【数据结构】算法 层数最深叶子节点的和 Deepest Leaves Sum
    【数据结构】算法 首个公共祖先 First Common Ancestor
    【数据结构】算法 Top K Frequent Words 前K个高频单词
    【数据结构】算法 Kth Largest Element in an Array 数组中的第K个最大元素
    【数据结构】算法 搜索旋转排序数组 Search in Rotated Sorted Array II
  • 原文地址:https://www.cnblogs.com/liujiayun/p/5383716.html
Copyright © 2011-2022 走看看