接口继承

来源:互联网 发布:办公室软件培训 编辑:程序博客网 时间:2024/05/01 03:24
 
基于接口的编程方式提供了另一种在不趋向于紧密结合的情况下获得重用的方式。基于接口的编程方式是以“黑盒重用”(black-box reuse)为基础的,其中从不会破坏封装性。客户只知道可用请求集的名称和调用语法。客户永远不知道他们所用的对象背后的实现细节。
   黑盒重用是通过正式地分离接口和实现来获得的。这意味着接口将变成“一等公民”。接口是一种在自身基础上定义的独立的数据类型。这是传统OOP的一种发展形式,其中公共接口是在类定义的范围内定义的。
这时您可能会认为这是非常模糊的。您可能会问:“接口到底是什么?”不幸的是,很难提供一个准确的定义来表达一种全新的编写软件的方式的主要概念。接口可以采用多种方式来描述。您可以很快地理解定义、实现和使用接口听语法。但是,对于普通的程序员,要想完全掌握软件设计中接口的各个分支是非常困难的。学习如何使用接口进行设计通常需要几个月甚至几年的时间。
   从根本来说,“接口是一组公共的方法签名。”它为一组逻辑相关的客户请求定义了调用的语法。但是,当接口定义方法签名时,它不能包括任何实现或数据属性。通过提供一个间接层,接口可以从使用它的客户中分离类。这意味着,为了更有用,接口必须通过一个或多个类来实现。一旦接口是通过类来实现的,客户就可以从该类创建对象,并通过接口引用与对象进行通信。
您可以使用接口来创建对象引用,便不能创建对象本身。这是非常有意义的,因为对象需要不能通过接口提供的数据属性和方法实现。因为它不是可创建的实体,所以“接口是一种抽象的数据类型”。对象只能通过一种被称为“具体数据类型”的可创建类来实例化。
从设计角度来看,“接口是一种合同。”实现接口的类可以保证,它所提供的对象将支持一种具体的类型的行为。具体地说,类必须为通过接口定义的每个方法提供一个实现。当通过接口引用与对象进行通信时客户可以确保对象将会对在接口中定义中的每个方法提供一种合理的响应。
   多个类可以实现相同的接口。接口为每个方法定义准确的调用语法及宽松的语义。宽松的语义使每一个类的作者都可以在一定程度上自由地为每个方法确定适当的对象行为。例如,如果IDog接口定义了一个名为“Bark”的方法,那么不同的类作者可以对同一个请求提供不同的响应,只要每种响应在一定程度符合狗叫的概念。这意味着“接口为多态提供了机会”。在允许您构建由插头兼容的对象组成的应用程序方面,接口类似于实现继承。但是接口是不会在使用实现继承和白盒重用时出现紧密联系问题的情况下提供插头兼容性的。
 
原创粉丝点击