c#接口实现多态

接口=规范 interface

约定好遵守某种规范就可以写通用的代码

如笔记本的内存条等...

里面象类一样但不是类

里面有1系列的方法,

任意类实现时必须实现接口里的所有的方法

那么这个类肯定有这些方法,可以直接拿来用

接口就是规范

------接口实现的意义是多态

多态的意义是可扩展性灵活性

 

比如鸟类,都会跑,一般鸟会飞,但是有的鸟不会飞

所以写2个类,鸟类,里面有跑的方法,和飞类,里面有飞的方法

但是麻雀不能同时继承鸟类和飞类

所以把飞类定义为接口,命名规范:IFlyable,I开头able结尾

 

//1.接口命名以大写I开头,由于接口中都是方法(而方法主要是实现某个功能,能力),所以接口的命名一般都是XXXable具有某些能力

//2.接口中可以包含方法、属性、索引器、事件(通过反编译查看以后,得知:其实都是方法(最终都编译成了方法。))Item

//3.接口中的成员,默认访问修饰符就是public

//4.接口中的成员不能有任何实现,就像抽象访法一样。

//5.实现接口的子类,必须将接口中的所有成员都实现。

//6实现接口的子类,直接将接口中的成员实现即可,无需override关键字。

//7.当一个类同时继承了其他类,并且实现了接口的时候,必须保证将类放在前面,接口放在后面。

 

例子:

   //

   class Bird

   {

       public void Run()

       {

           Console.WriteLine("鸟在奔跑!");

       }

   }

 

   //接口

   public interface IFlyable

   {

       //接口和抽象类一样,也是只能有方法的声明,不能有任何的实现

       void Fly();

   }

 

   //麻雀

   class Sparrow : Bird, IFlyable

   {

 

       #region IFlyable 成员

 

       public void Fly()

       {

           Console.WriteLine("小麻雀飞在树林中。");

       }

 

       #endregion

   }

   //鹦鹉

   class Parrot : Bird, IFlyable

   {

 

       #region IFlyable 成员

 

       public void Fly()

       {

           Console.WriteLine("鹦鹉在小笼子里飞...");

       }

 

       #endregion

   }

   //企鹅

   class Penguin : Bird

   {

 

   }

 

实现:

IFlyable fly = new Parrot();

fly.Fly();

 

打印结果:

鹦鹉在小笼子里飞...

 

建议:


面向抽象编程,使用抽象(父类、抽象类、接口)不使用具体。

“向上转型”

在编程时:

接口→抽象类→父类→具体类(在定义方法参数、返回值、声明变量的时候能用抽象就不要用具体。)

能使用接口就不用抽象类,能使用抽象类就不用类,能用父类就不用子类。

避免定义“体积庞大的接口”、“多功能接口”,会造成“接口污染”。只把相关联的一组成员定义到一个接口中(尽量在接口中少定义成员)。单一职责原则

定义多个职责单一的接口(小接口)(组合使用)。(印刷术与活字印刷术)

随着学习的深入再继续体会接口的作用。

 

posted @ 2014-01-24 14:17  Net-Spider  阅读(369)  评论(0)    收藏  举报