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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李波 黑马帝   /  2011-12-4 15:54  /  2730 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想问的是:编程中的接口有什么用?怎么用?主要用在什么地方?为什么在那个地方使用接口?(最好举例说明啊,呵呵)

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

6 个回复

倒序浏览
接口是面向对象编程思想重要特性之一,接口是当把多个继承类中的公共对象部分抽象出来、并封装这些公共对象的行为。接口是为了继承而存在的,如果没有继承,也就不
需要接口的存在。
在 C#中,类可以通过继承多个接口来丰富自己的行为机制,但类是不可以继承多个类的。

接口只定义,不包含方法的实现。  接口可以包含方法、属性、事件和索引器。  接口成员必须是公共的。   接口不能被直接实例化。   接口不能包含任何字段。
  接口描述可属于任何类或结构的一组相关行为。   接口自身均可以从多个接口继承。   类和结构均可以从多个接口继承。
接口类似于抽象类,但继承接口的类型必须实现接口中的所有定义的成员对象。
下面代码实现了一个简单的信号灯功能,代码如下:
interface ITrafficRule                   //定义一个接口(交通规则)
{
void CrossTheRoad(int trafficLight);   //定义一个方法(十字路口)
}
public class MyPupil : ITrafficRule
{
public void CrossTheRoad(int trafficLight)
//实现十字路口的信号灯功能的方法
{
switch (trafficLight)
{
case 0:                             //红灯停

break;
case 1:                            //黄灯等一等

break;
case 2:                           //绿灯行

break;
default:              //当信号故障,且两侧没有直行车辆时,可以穿过马路

break;
}
}
}

评分

参与人数 1技术分 +3 收起 理由
李荣壮 + 3

查看全部评分

回复 使用道具 举报
有时需要根据对象完成的工作将对象分组,而不是根据它们继承的类来分组。这就引入了接口,通过接口,可以使用能完成任务的任何一个类。

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
接口主要是为了实现多态
回复 使用道具 举报
接口可有有效的弥补类不能多继承的缺点

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
接口是把不同类型的共同的行为抽象的出来,用来不同对象继承实现共有的行为。只是不同对象有不同行为的内容不同. 比如:人有行走功能,车也有行驶功能等等

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
刘波 黑马帝 2011-12-14 15:44:56
7#
接口是程序对功能不同,但使用方法相同的类的概括和定义,如果你的很多类要继承一个同一个接口,但又经常都不需要实现所有这个接口的所有方法或者属性,那就是你的接口设计的有问题。举个例子:
比如, "手动档轿车" 这个接口,它需要有以下几个方法就能开走:方向盘、油门、刹车、排档、离合器 。 福特福克斯,奇瑞 A3, 大众菠萝, 夏利 N8 这几个具体的车型相当于"类",它们都继承"手动档轿车",我会开手动档轿车,那么这些实现 "手动档轿车" 接口的随便一辆车拿给我,我都能开走。 但是你造了那么一辆车,它没有刹车、没有排档、没有离合器,然后告诉我这是一辆"手动档轿车"(继承"手动档轿车" 接口) , 我拿去,是能开走,但是一旦想停车、换档,才发现没有这几个设备(方法,属性),后果是什么? 没人规定你造的这个车不能叫"手动档轿车",但很显然别人要用开手动档轿车的方法来开你这个车,十有八九会出事故。所以,编译器规定你继承了一个接口,你就必须实现它的所有成员,就像规定你造"手动档轿车",必须把方向盘、油门、刹车、排档、离合器全部装全才行。

希望对你有所帮助

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马