深入了解接口的使用

时间:2021-07-19 14:40:50

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

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

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

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

 

                                  定义接口的方法如下:

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("我是飞机");
        }
    }
}