码迷,mamicode.com
首页 > 其他好文 > 详细

深入了解接口

时间:2016-04-13 23:37:52      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

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

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

通俗理解:就是飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是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("我是飞机");
        }
    }
}

 

深入了解接口

标签:

原文地址:http://www.cnblogs.com/shuaibin/p/5389310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!