关于对象的描述

来源:互联网 发布:淘宝联盟社区首页 编辑:程序博客网 时间:2024/05/17 06:36

原文是这样的:

1.6.3 指定对象接口
    对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型
构( s i g n a t u r e )。对象操作所定义的所有操作型构的集合被称为该对象的接口( i n t e r f a c e )。对象
接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口中型构的请求都可以发送
给该对象。
    类型(type) 是用来标识特定接口的一个名字。如果一个对象接受“ Wi n d o w”接口所定义
的所有操作请求,那么我们就说该对象具有“ Wi n d o w”类型。一个对象可以有许多类型,并
且不同的对象可以共享同一个类型。对象接口的某部分可以用某个类型来刻画,而其他部分
则可用其他类型刻画。两个类型相同的对象只需要共享它们的部分接口。接口可以包含其他
接口作为子集。当一个类型的接口包含另一个类型的接口时,我们就说它是另一个类型的子
类型( s u b t y p e ),另一个类型称之为它的超类型( s u p e r t y p e )。我们常说子类型继承了它的超类型
的接口。

第一段话还蛮好理解,就是类。

第二段话:类型type可以理解为类名,因为__interface这个接口指定符就是class的同义词。

一个对象(类,类也是对象)接受一个接口的所有操作请求。可以理解为类的继承。

这第二段话用抽象简洁精炼的语句把类的继承描述的非常通透,读起来真是大人心


    在面向对象系统中,接口是基本的组成部分。对象只有通过它们的接口才能与外部交流,
如果不通过对象的接口就无法知道对象的任何事情,也无法请求对象做任何事情。对象接口
与其功能实现是分离的,不同对象可以对请求做不同的实现,也就是说,两个有相同接口的
对象可以有完全不同的实现。

    当给对象发送请求时,所引起的具体操作既与请求本身有关又与接受对象有关。支持相
同请求的不同对象可能对请求激发的操作有不同的实现。发送给对象的请求和它的相应操作
在运行时刻的连接就称之为动态绑定(dynamic binding)。
动态绑定是指发送的请求直到运行时刻才受你的具体的实现的约束。因而,在知道任何
有正确接口的对象都将接受此请求时,你可以写一个一般的程序,它期待着那些具有该特定
接口的对象。进一步讲,动态绑定允许你在运行时刻彼此替换有相同接口的对象。这种可替
换性就称为多态( p o l y m o r p h i s m ),它是面向对象系统中的核心概念之一。多态允许客户对象仅
要求其他对象支持特定接口,除此之外对其假设几近于无。多态简化了客户的定义,使得对
象间彼此独立,并可以在运行时刻动态改变它们相互的关系。

这段话提到了多态



继续理解:

上面理解有些问题:类和接口还是有些细微差别

类包含了数据和操作等,而接口只关注操作


类继承与接口继承的比较:
理解对象的类( c l a s s )与对象的类型( t y p e )之间的差别非常重要。
一个对象的类定义了对象是怎样实现的,同时也定义了对象的内部状态和操作的实现。
但是对象的类型只与它的接口有关,接口即对象能响应的请求的集合。一个对象可以有多个
类型,不同类的对象可以有相同的类型。
当然,对象的类和类型是有紧密关系的。因为类定义了对象所能执行的操作,也定义了
对象的类型。当我们说一个对象是一个类的实例时,即指该对象支持类所定义的接口


理解类继承和接口继承(或子类型化)之间的差别也十分重要。类继承根据一个对象的实现
定义了另一个对象的实现。简而言之,它是代码和表示的共享机制。然而,接口继承 (或子类
型化)描述了一个对象什么时候能被用来替代另一个对象。

因为许多语言并不显式地区分这两个概念,所以容易被混淆。在 C + +和E i ff e l语言中,继
承既指接口的继承又指实现的继承。 C + +中接口继承的标准方法是公有继承一个含 (纯)虚成员
函数的类。C + +中纯接口继承接近于公有继承纯抽象类,纯实现继承或纯类继承接近于私有
继承。

C + +程序员通过抽象类所定义的类型来操纵对象

原创粉丝点击