C#中定义接口有什么作用
4个回答
展开全部
接口最简单的作用就是:不同的类完成相同的行为!
但不同的类的同一行为要延迟到子类实现!
比如,在系统分析时我们只使用了两个类,一个是dog,一个是cat,他们都可以实现一个shot的行为,如果两者均有的情况下,原来是可以将shot行为提升到dog与cat的父类中,也就是动物类中实现,由于系统中并没有对两个类进行提升,也就是说,这当前系统中不存在dog与cat的父类,那么,我们可以实现一个接口去解决这两个不同的类的同一行为,就是定义Ishot接口,让两个不同的类进行继承!这样两个类可以实现同一行为了!
当然这里的类,cat与dog你还可以再提升一个抽象的动物类,如果不能提升时则就不行了!比如鱼类都不会shot,但鲸却可以shot,而鲸具有所有鱼类的特征,这时就不能为鲸的shot进行提升,让所有钱类都会shot并不是一个好主意,所以dog、cat与鲸可以共同继承一个Ishot,但不能让将shot行为提升到dog、cat与鲸的父对象中!
所以对于接口,就简单的一句话来说:接口可以让不同的类实行相同的行为,并将这个行为延迟到子类实现!
至于延迟到子类实现的意思就是,鲸,cat,dog的shot行为并不一样,各自实现不同的功能,并必须要有这个行为才可以的!
如让鲸继承Ishot接口后,在编写鲸这一类型时必须要实现Ishot中的所有方法,如shot,如果不进行实现,则编译就不能通过,也就是说,鲸继承了Ishot,在Ishot中的SHot方法必须在鲸的为中编写实现,这就是延迟到子类实现的意思!
但不同的类的同一行为要延迟到子类实现!
比如,在系统分析时我们只使用了两个类,一个是dog,一个是cat,他们都可以实现一个shot的行为,如果两者均有的情况下,原来是可以将shot行为提升到dog与cat的父类中,也就是动物类中实现,由于系统中并没有对两个类进行提升,也就是说,这当前系统中不存在dog与cat的父类,那么,我们可以实现一个接口去解决这两个不同的类的同一行为,就是定义Ishot接口,让两个不同的类进行继承!这样两个类可以实现同一行为了!
当然这里的类,cat与dog你还可以再提升一个抽象的动物类,如果不能提升时则就不行了!比如鱼类都不会shot,但鲸却可以shot,而鲸具有所有鱼类的特征,这时就不能为鲸的shot进行提升,让所有钱类都会shot并不是一个好主意,所以dog、cat与鲸可以共同继承一个Ishot,但不能让将shot行为提升到dog、cat与鲸的父对象中!
所以对于接口,就简单的一句话来说:接口可以让不同的类实行相同的行为,并将这个行为延迟到子类实现!
至于延迟到子类实现的意思就是,鲸,cat,dog的shot行为并不一样,各自实现不同的功能,并必须要有这个行为才可以的!
如让鲸继承Ishot接口后,在编写鲸这一类型时必须要实现Ishot中的所有方法,如shot,如果不进行实现,则编译就不能通过,也就是说,鲸继承了Ishot,在Ishot中的SHot方法必须在鲸的为中编写实现,这就是延迟到子类实现的意思!
2011-12-19
展开全部
网上找到的答案,希望对你有帮助
1.接口最基本的作用就是作为一个客观的规范 是一类事物所具有的属性的总结 相当于父类
举例说明下 人 有身高这个属性 有吃饭这个方法 有痛了就喊"妈呀"这个事件
OK 这样就可以把这些属性,方法,事件总结起来定义一个接口 叫"人类"
(这里的LogHandler OnLog就是一个事件 下面会具体讲到)
2.接口还有一个最基本的作用(也是父类所没有的)——多态
估名思义 人具有多种"态" 比如某个人却实具有了人类的所有属性 但是很特别 这个人还具备一般人不具有但却是动物独有的一种行为——"吃人"(这里且不把人看做动物) 那么这个人也实现了另一个接口 叫"动物类"
具体实在代码:
public class riBenRen : IPeople, IAnimal
{
private float height = 5.0;
public event BeiKan onBeiKan;
public string Eat(string food){
//消化过程
return "屎";
}
public string EatPeople(IPeople people){
//消化过程
return "屎";
}
}
3.以上两种作用只是形式上的 它还有另一个作用就是"子类的实例调用父类的引用" (貌似是这么说的)
举例说明
我不知道某人叫什么 我只知道他属于人类 那么我一定知道他有吃饭的行为 我就可以扔给他一个骨头
具体代码
IPeople chenLaoShi = new ChenGuanXi();
chenLaoShi .Eat("骨头");
4.至于那个事件
LogHandler是一个委托 为什么叫委托 就是把某件事委托给系统 当什么什么情况就让它触发什么什么事件
具体代码
/*这个是我*/
public class ChaoRen :IPeople
{
public delegate void OnKanRen();
public event OnKanRen kanRen;
//点一个按钮让某人被砍
priate void Button1Click(object sender,EventArgs e){
kanRen();//调用了
}
}
/*被砍那个人的类*/
public class ChenGuanXi : IPeople, IAnimal
{
private class ChaoRen cr;//这个是我
public ChenShuiBian(){
//给陈老师安个定时被砍器 只要我一砍人陈老师就会被砍
cr.kanRen += new EventHander(BeiKan);
}
private void BeiKan(){
//被砍了
}
}
1.接口最基本的作用就是作为一个客观的规范 是一类事物所具有的属性的总结 相当于父类
举例说明下 人 有身高这个属性 有吃饭这个方法 有痛了就喊"妈呀"这个事件
OK 这样就可以把这些属性,方法,事件总结起来定义一个接口 叫"人类"
(这里的LogHandler OnLog就是一个事件 下面会具体讲到)
2.接口还有一个最基本的作用(也是父类所没有的)——多态
估名思义 人具有多种"态" 比如某个人却实具有了人类的所有属性 但是很特别 这个人还具备一般人不具有但却是动物独有的一种行为——"吃人"(这里且不把人看做动物) 那么这个人也实现了另一个接口 叫"动物类"
具体实在代码:
public class riBenRen : IPeople, IAnimal
{
private float height = 5.0;
public event BeiKan onBeiKan;
public string Eat(string food){
//消化过程
return "屎";
}
public string EatPeople(IPeople people){
//消化过程
return "屎";
}
}
3.以上两种作用只是形式上的 它还有另一个作用就是"子类的实例调用父类的引用" (貌似是这么说的)
举例说明
我不知道某人叫什么 我只知道他属于人类 那么我一定知道他有吃饭的行为 我就可以扔给他一个骨头
具体代码
IPeople chenLaoShi = new ChenGuanXi();
chenLaoShi .Eat("骨头");
4.至于那个事件
LogHandler是一个委托 为什么叫委托 就是把某件事委托给系统 当什么什么情况就让它触发什么什么事件
具体代码
/*这个是我*/
public class ChaoRen :IPeople
{
public delegate void OnKanRen();
public event OnKanRen kanRen;
//点一个按钮让某人被砍
priate void Button1Click(object sender,EventArgs e){
kanRen();//调用了
}
}
/*被砍那个人的类*/
public class ChenGuanXi : IPeople, IAnimal
{
private class ChaoRen cr;//这个是我
public ChenShuiBian(){
//给陈老师安个定时被砍器 只要我一砍人陈老师就会被砍
cr.kanRen += new EventHander(BeiKan);
}
private void BeiKan(){
//被砍了
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的回答应该能满足楼主了。我再打个比方:如果把接口比作一个合同(规定了你能做什么,但没有规定你怎么做),实现了这个接口的类就相当于是履行合同的人,这个人必须按照合同的规定去做事情,但是不同的人在做某件事的时候会可以通过不同的手段。
希望对你有帮助
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当你知道接口有些什么东西,你就知道实现了这些接口的类肯定具有什么功能。
例如:当你学会了操作某一种DVD机后,你再接触到另外一款DVD机,你肯定会知道绝对存在一个按键可以弹出东西来放光碟。你也肯定知道这个如果是插电源的肯定有个接头。
当然具体实现在不同的dvd机器有差别,有点一下就弹出来,有些弹的慢一些。
例如:当你学会了操作某一种DVD机后,你再接触到另外一款DVD机,你肯定会知道绝对存在一个按键可以弹出东西来放光碟。你也肯定知道这个如果是插电源的肯定有个接头。
当然具体实现在不同的dvd机器有差别,有点一下就弹出来,有些弹的慢一些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询