什么是接口?接口是用来做什么的? 看了MSDN和C#入门经典,对接口的概念还是不太明白。什么是接口?接口是用来做什么的?我以前学过C++,学习C#的一些概念是主要通过对比C++来加深对它认识,可C++里好像没有接口这个概念?那么C#用接口的地方C++又是怎么实现的呢?望大家指点一二。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 接口不允许"实现继承",抽象类可以。可以参考COM相关书籍。 接口是一个标准或者规范,凡是想实现这个接口的功能都必须符合这个规范。举个例子:public interface IFly;飞翔是一个接口,里面定义所以飞翔必备的东西,比如最高飞行高度阿,飞行速度阿之类的属性和方法。鸟能飞,所以要实现所有飞翔接口里定义的东西。class Bird:IFly{//必须实现所有飞翔的属性和方法。//实现自己的属性方法}蜜蜂也能飞,所以它也要实现所有飞翔接口里定义的东西。class Bee:IFly{//必须实现所有飞翔的属性和方法。//实现自己的属性方法} 说的白一点。例如有A,B两个东西。它们相交互。但又不知道双方的规约。所以这时C出现了。C相当于第三方。是A,B间的桥。C可以称为接口。之要A,B都去实现这个接口。它们就可以在某种意思上进行交互。顾名思意。 抽象类和接口的区别在于,抽象类一般表示实体,而接口一般表示功能。举个例子:class person{//所有人的属性和方法,有些已经实现好了,子类不必实现。}public interface IRun{//跑步所要实现的属性和方法}class man : person,IRun{//重写一部分人的属性和方法。//添加男人自己的属性和方法。}class woman : person,IRun{//重写一部分人的属性和方法。//添加女人自己的属性和方法,比如生孩子。}class dog : IRun{//狗也能跑,但是因为它是狗,所以不能继承man抽象类,因为它能跑,所以它可以实现IRun接口} 上面打错了点........ person 忘了加 abstract 举个例子public interface ISpeak{ void Speak();}public Cat:ISpeak{ public override void Speak() { Say("喵~~~"); }}public Dog:ISpeak{ public override void Speak() { Say("汪汪!"); }}public LZ:ISpeak{ public override void Speak() { Say("靠!管我屁事!"); }}比如有一个ArrayList,存储许多能“说话”的生物吗,我们就可以这样调用foreach(object obj in arrSpeak){ ISpeak speak = obj as ISpeak; speak.Speak();} chieftech(【标题党总书记】) 真敬业~ ISpeak speak = obj as ISpeak;-----------------------------------这个是多态么?原来多态并不只是针对类的一个概念呀。 面试官:知道什么叫类么 应聘者:我这人实在,工作努力,不知道什么叫累 面试官:知道什么是包? 应聘者:我这人实在 平常不带包 也不用公司准备了 面试官:知道什么是接口吗? 应聘者:我这个人工作认真。从来不找借口偷懒 M:知道什么是继承么 Y:我是孤儿没什么可以继承的 M:知道什么叫对象么? M:知道,不过我工作努力,上进心强,暂时还没有打算找对象。 M:知道多态么? Y:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系?? 面试官:知道什么叫类么 应聘者:我这人实在,工作努力,不知道什么叫累 面试官:知道什么是包? 应聘者:我这人实在 平常不带包 也不用公司准备了 面试官:知道什么是接口吗? 应聘者:我这个人工作认真。从来不找借口偷懒 M:知道什么是继承么 Y:我是孤儿没什么可以继承的 M:知道什么叫对象么? M:知道,不过我工作努力,上进心强,暂时还没有打算找对象。 M:知道多态么? Y:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系?? 顶一下,看了这个帖子就基本懂了。谢谢楼上的各种比喻和总结。tmd msdn的描述真是云里雾里的。 MDI父窗体控件遮挡子窗体如何解决?急 想做个文本批量处理器,苦于没有思路,给点建议 c# richTextBox 选中取消问题 特殊字符 .net2003下关于treeview的事件问题 datagridview里直接增删改查问题 如何在socket编程中传输自己定义的数据,比如一个结构体,谢谢! 如何实现禁用键盘某些键? C# 怎么保存换行 如何在系统菜单"关闭"后面添加一个"关于"菜单? treeview选择多个节点 asp.net如何截屏
举个例子:
public interface IFly;
飞翔是一个接口,里面定义所以飞翔必备的东西,比如最高飞行高度阿,飞行速度阿之类的属性和方法。鸟能飞,所以要实现所有飞翔接口里定义的东西。
class Bird:IFly
{
//必须实现所有飞翔的属性和方法。//实现自己的属性方法
}蜜蜂也能飞,所以它也要实现所有飞翔接口里定义的东西。
class Bee:IFly
{
//必须实现所有飞翔的属性和方法。//实现自己的属性方法
}
例如有A,B两个东西。它们相交互。但又不知道双方的规约。
所以这时C出现了。C相当于第三方。是A,B间的桥。C可以称为接口。之要A,B都去实现这个接口。它们就可以在某种意思上进行交互。顾名思意。
举个例子:
class person
{
//所有人的属性和方法,有些已经实现好了,子类不必实现。
}
public interface IRun
{
//跑步所要实现的属性和方法
}class man : person,IRun
{
//重写一部分人的属性和方法。//添加男人自己的属性和方法。
}class woman : person,IRun
{
//重写一部分人的属性和方法。//添加女人自己的属性和方法,比如生孩子。
}class dog : IRun
{
//狗也能跑,但是因为它是狗,所以不能继承man抽象类,因为它能跑,所以它可以实现IRun接口
}
public interface ISpeak
{
void Speak();
}public Cat:ISpeak
{
public override void Speak()
{
Say("喵~~~");
}
}public Dog:ISpeak
{
public override void Speak()
{
Say("汪汪!");
}
}public LZ:ISpeak
{
public override void Speak()
{
Say("靠!管我屁事!");
}
}比如有一个ArrayList,存储许多能“说话”的生物吗,
我们就可以这样调用
foreach(object obj in arrSpeak)
{
ISpeak speak = obj as ISpeak;
speak.Speak();
}
-----------------------------------
这个是多态么?原来多态并不只是针对类的一个概念呀。
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
M:知道什么是继承么
Y:我是孤儿没什么可以继承的
M:知道什么叫对象么?
M:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
M:知道多态么?
Y:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
M:知道什么是继承么
Y:我是孤儿没什么可以继承的
M:知道什么叫对象么?
M:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
M:知道多态么?
Y:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??