A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liucaifu 黑马帝   /  2011-10-25 15:11  /  2746 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       在一些开发当中,经常会听到说是往接口里放数据,但是不知识其含意,我只是知道interface的概念,在开发中本人用得少,谁知道往接口里写代码是啥意思?有代码最好了

评分

参与人数 1技术分 +1 收起 理由
官方工作人员 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 李荣壮 于 2011-10-25 17:25 编辑

当一个类的代码已经经过严格测试,不方便改动,或者从第三方拿到了一个封装好的类之后,发现需要向类中增加功能,这个时候就用到了"接口"
写接口和写类差不多,调用的时候,在类的后面加上":接口名"就可以了


我的理解,如有错误请指正.

  1. //基类 功能为显示拨打了电话
  2. public class Phone
  3. {
  4.     public void call(string phoneNumber)
  5.     {
  6.         Console.WriteLine("拨打了电话:" + phoneNumber);
  7.     }
  8. }

  9. //定义接口 用于显示发送了消息
  10. public interface IMsgable
  11. {
  12.     //方法不能有实现部分(由实现接口的类来实现该方法),结尾必需加分号
  13.     void Msg(string phoneNumber);      
  14. }

  15. //继承类:继承了基类Phone 并实现了接口IMsgable
  16. public class NewPhone:Phone, IMsgable
  17. {
  18.     //要在实现接口的类中,提供接口中提供方法的实现代码
  19.     public void Msg(string phoneNumber)
  20.     {
  21.         Console.WriteLine("向{0}发送了一条消息",phoneNumber);
  22.     }

  23.     //构造函数
  24.     public NewPhone(string phoneNumber)
  25.     {
  26.         call(phoneNumber);
  27.         Msg(phoneNumber);
  28.     }
  29.    
  30. }
复制代码
在Main函数中直接New一个NewPhone的实例

  1. //输出为:拨打了电话:119
  2. //向119发送了一条消息
  3. NewPhone myPhone = new NewPhone("119");
复制代码
回复 使用道具 举报
接口是为了让继承的类实现接口里定义的方法。
比如 猪、猫。可以先定义一个动物的接口。
回复 使用道具 举报
其实接口本身是不包含任何数据和代码的,它只是规定了从你定义的这个接口继承的一个类必须提供的哪些方法和属性的,在接口里面只是定义了方法名称,但是没有写如何实现这个方法的功能,要实现的话通过你自己定义的一个类来继承该接口,然后在该类里面实现该方法特有的功能,其实接口就只是起到了一个约束的作用而已,我打一个比方,假设一栋高楼的房子,那么可以把这个房子的一个门定义成一个接口,那么如何通过这个门进入房子里是一个方法,那么该方法针对不同的人可能就有不同的方式去实现,A可以通过直接坐电梯就能进入这个房间,而B为了锻炼身体,他直接爬楼梯,C更加疯狂,哈哈,直接通过爬水道管进入。但是ABC都是通过这个门这个开放的接口进去的,要是这个门封死了,那ABC谁都进不去,因此就为了安全一点,其实起到一个约束的作用,告诉这三个人只有通过我这个门你才能进入我的房子,不管你们是爬楼梯还是坐电梯(各种实现自己的方法),必须要知道我有这个门(接口)才行。下面我用另外一个例子关于人和动物行走方式,我简单用代码来说明。
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Person p = new Person();
  6.             p.Wark();
  7.             Cat c = new Cat();
  8.             c.Wark();
  9.             Console.ReadLine();
  10.         }
  11.     }
  12.     interface IWark //定义一个走路方式的接口
  13.     {
  14.         void Wark();
  15.         
  16.     }
  17.     class Person:IWark//人这个类继承该走路的接口
  18.     {
  19.         public void Wark()
  20.         {
  21.             Console.WriteLine("人是用两条腿走路的!");
  22.         }
  23.     }
  24.     class Cat : IWark//动物这个类继承改走路的接口
  25.     {
  26.         public void Wark()
  27.         {
  28.             Console.WriteLine("猫是用四条腿走路的!");
  29.         }
  30.     }
复制代码
回复 使用道具 举报
接口只包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成;接口都是为了 解决扩展性的问题  往往我们不会去关心 某个具体的类 而只在乎他有没有去实现某个接口 接口最大的特性 可以在一类中实现多个接口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马