C#回忆录八(接口)
接口是一组方法的集合,虽然在C#中,我们还可以在接口中定义属性,事件,但那不过是附加了元数据的方法。接口中的方法没有实现,继承他的类必须自己实现继承过来的方法,除非是抽象类。抽象类不可以被实例化。
在C#中,接口不可以继承其他的类型,但可以继承多个其它的接口。而一个类只能继承一个父类,但可以继承多个接口。在设计类的层次结构时,一般而言有两种 选择,可以继承接口,也可以继承一个类。继承类称为实现继承,因为它继承了基类所有的行为和属性。继承接口继承的是方法签名,提示许诺提供其中的方法的实 现。在做决定的时候要考虑以下几点:
一:IS A还是CAN DO.我们认为继承一个类时,表明子类和父类是IS A的关系,比如Apple类继承于Fruit类时,我们说苹果是水果的一种,他也可以继承IEat接口,表明它可以吃。
二:一致性,易用性。一般而言,继承一个类,会继承他的所有实现,我们的子类可以直接拿过来用无需再写代码,所以易用,又因为用的是同一份代码所以一致。
三:版本的演化。继承类时,修改父类后,子类会自动获得更新,利于版本演化。如果使用接口的话,修改接口将导致所有实现该接口的类都要修改。
四:由于在C#里一个类只能有一个父类,所以有时只能使用接口。比如,在.NET Remoting中,用来传送的对象必须继承于MarshelByRefObject类,这样他就不能去继承其他的类,只能用接口。
所以在设计框架的时候,我们会先设计一个接口,在设计一个实现该接口的类,客户可以视自身需要,选择继承接口或类。
在我们设计支持插件组件的应用程序时,接口起到很重要的作用。首先我们在一个工程中定义一组插件和我们的组件通信的接口,它涉及到的类型尽量用基础类型,如果用到自定义的类型,则应该一并放到工程中。接着分别在我们自己的组件和插件中引用该工程。
在C#中,接口不可以继承其他的类型,但可以继承多个其它的接口。而一个类只能继承一个父类,但可以继承多个接口。在设计类的层次结构时,一般而言有两种 选择,可以继承接口,也可以继承一个类。继承类称为实现继承,因为它继承了基类所有的行为和属性。继承接口继承的是方法签名,提示许诺提供其中的方法的实 现。在做决定的时候要考虑以下几点:
一:IS A还是CAN DO.我们认为继承一个类时,表明子类和父类是IS A的关系,比如Apple类继承于Fruit类时,我们说苹果是水果的一种,他也可以继承IEat接口,表明它可以吃。
二:一致性,易用性。一般而言,继承一个类,会继承他的所有实现,我们的子类可以直接拿过来用无需再写代码,所以易用,又因为用的是同一份代码所以一致。
三:版本的演化。继承类时,修改父类后,子类会自动获得更新,利于版本演化。如果使用接口的话,修改接口将导致所有实现该接口的类都要修改。
四:由于在C#里一个类只能有一个父类,所以有时只能使用接口。比如,在.NET Remoting中,用来传送的对象必须继承于MarshelByRefObject类,这样他就不能去继承其他的类,只能用接口。
所以在设计框架的时候,我们会先设计一个接口,在设计一个实现该接口的类,客户可以视自身需要,选择继承接口或类。
在我们设计支持插件组件的应用程序时,接口起到很重要的作用。首先我们在一个工程中定义一组插件和我们的组件通信的接口,它涉及到的类型尽量用基础类型,如果用到自定义的类型,则应该一并放到工程中。接着分别在我们自己的组件和插件中引用该工程。
posted on 2006-12-17 12:54 nicholas_chen 阅读(162) 评论(0) 收藏 举报
浙公网安备 33010602011771号