请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C#中的接口(Interface)

  [复制链接]
查看3543 | 回复1 | 2016-1-18 15:20:51 | 显示全部楼层 |阅读模式

      对于很多初学者来说是个很容易迷糊的东西,使用起来很简单,无非就是定义接口,接口里面包含一些属性、索引器、事件和一些没有修饰符的方法,也没有方法的具体实现代码;然后在类中继承该接口,实现该接口中的所有属性、索引器、事件和方法的具体实现的代码(其实接口中只能这几个,一般我们用到的只有属性和方法所以在这里我就只跟大家分享其中的一种“方法”)。接口的使用就这么简单,只要照着去写代码就行了;但没有真正认识到接口的作用的人,都会感觉没有用接口的必要;感觉多此一举,在没真正认识到接口的作用时我也是这么认为的。

     微软不会把多此一举的东西推出到市场上,哪么接下来我们就来看看接口的妙处在哪里。

     我们先定义一个接口

      public Interface IBase

      {

            void ClassPrind(string s);

      }

      再定义一个类继承于IBase接口,并且实现方法

      public class DogClass :IBase

      {

             public void ClassPrind(string s)

             {

                   Console.WriteLine(s);

             }

      }

      最后我们在Main里面调用他

     class ClassMain

     {

          statric void Main(string []args)

         {

                IBase base=new DogClass();

                base.ClassPrind("小狗");

         }

     }

输出结果

小狗

    单从上面的代码中看起确实多此一举,我们只要实例化DogClass类在去调用ClassPrind方法就行了,没必要多定义一个接口。但是如果我们要再写多一个CatClass类,类里也同样要传入一个参数输出的方法呢?不错我们只要写多一个类,类里写多一个方法就行快的很;但我们在新写的类中的方法名可能会不一样,也就是说我们要多一个方法;这还不算什么,如果这个类和方法你们项目经理是叫别人写的话,你将不知道这个方法,我们使用起来就不方便了。但如果我们使用接口就不同了,虽然也还是要写多一个类和一个方法;但我们只要把这个类继承于接口,再实现他。哪么不管是谁去新增这个类,我们都能准确的找到他,使用他。

      我们来加上CatClass这个类

      public class CatClass :IBase

      {

             public void ClassPrind(string s)

             {

                   Console.WriteLine(s);

             }

      }

     再看看调用和输出


class ClassMain

     {

          statric void Main(string []args)

         {

                IBase base=new DogClass();

                base.ClassPrind("小狗");

                IBase base=new CatClass();

                base.ClassPrind("小猫");

         }

     }

输出结果

  小狗

  小猫

从调用输出中我们很明显的看出我们只要改个类名、改个参数调用的结果就是别一个类中的方法,我们根本就不用去记别人写的方法名是什么,也不用写这个类的人告诉我们这个类是写来干嘛的。这样我们不管是在团队项目中,还是在个人项目里都很容易的扩展、大大提高了工作效率,我们也不用记住哪么多的东西,何乐而不为呢。



如有不足或写错的地方欢迎指正,谢谢!!!!


ibcadmin | 2016-1-18 15:24:21 | 显示全部楼层
顶一下
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则