什么是接口(入门篇)

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

上学的时候,学校的老师,总会用一些简单的例子来解释什么是接口(interface)

这些例子可能像是这样

///<summary>///一个表示动物的接口///</summary>publicinterfaceIAnimal

{///<summary>///所有的动物都要吃东西///</summary>voidEat();

}

然后再随便上一个小动物,比如像这样的

publicclassCat : IAnimal

{publicvoidEat()

{

Console.WriteLine("我是小猫,我要吃鱼")

}

}

然后对接口的解释也基本上就结束了,随着一些作业和考试,我们只知道,接口是这么一个没有实现任何方法,只定义了方法内容的东西。

具体有什么用呢?也许只是觉得当有一些对象能够形成像动物这样的树形图的时候,我们才会在树根的位置放置一个接口。

然后

接口的作用并不体显在什么小动物、载具、或是人这种对象树上

先说一种最简单的接口设计情形:功能向接口

我们的程序里涉及到很多对象,但这些对象都有一个共同的功能——销售,拥有一个价格,是否参加折扣活动,以及折后价格

那么,我们可以针对这项“功能”设计一个接口

///<summary>///表示一个可以用于销售的功能接口///</summary>publicinterfaceISaleable

{///<summary>///价格///</summary>intPRice {get; }///<summary>///是否可以参加折扣///</summary>boolCanDiscount {get; }///<summary>///折后价格///</summary>intDiscountedPrice {get;}

}

有了这么一个接口以后,我们就可以做使用这个“接口”的方法了

比如我们做一个销售员的对象,除去那些姓名、员工号一类的属性不谈,至少它应当拥有一个方法,叫Sell,我们来看代码

publicclassSeller

{voidSell(ISaleable good)

{if(good.CanDiscount)

{

Console.Write("您好,你所购买的产品可以参加折扣。折扣的价格是{0}", good.DiscountedPrice);

}else{

Console.WriteLine("您好,你所购买的产品没有参加任何折扣,只能按照原价{0}进行购买",good.Price)

}

}

}

于是,我们有了一个功能接口,可以使用了该功能的类型,那么,现在让我们像上大学那样,随便建几个类型吧

publicclassCar : ISaleable

{publicintPrice

{get{return100000; }

}publicboolCanDiscount

{get{returnfalse; }

}///<summary>///由于该类型不可以有折扣,所以折后价格是可以不实现的///</summary>publicintDiscountedPrice

{get{thrownewNotImplementedException(); }

}

}publicclassCompute : ISaleable

{publicintPrice

{get{return5000; }

}publicboolCanDiscount

{get{returntrue; }

}publicintDiscountedPrice

{get{return5000*0.8; }

}

}

这样,销售员就可以卖这两样商品了

在下一篇 《什么是接口(入门篇)——使你的程序功能丰富》 您还可以学习到接口更多的用法

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航