多态机制

10.1多态类型-静中之动

1.继承时多态的基础,多态是继承的目的

2.职责分离的好处,没有绝对的对和绝对的错,分析的角度不同

3.正如子类型应遵守超类型的规范。同名的函数或方法也应该遵循相同的规范。如果为贪图取名的方便而滥用

重载,早晚会因小失大。


10.2抽象类型

1.抽象是个相对的概念,一个类型是否是抽象的完全取决于设计者对它的角色定位。如果想用它来创建对象,它就是

实例化的具体类型,如果想用它作为其他类型的基类,他就是不可实例化的抽象类型。

2.具体类型是创建对象的模板,抽象类型是创建类型的模板。一个是为对象服务,一个是为类型服务。显然,后者的抽象

正是源于其服务对象的抽象。

值得注意,不要把抽象类型与抽象数据类型混为一谈,后者的抽象指的是类型的接口不依赖其实现,或者说,抽象数据类型的核心

是数据抽象,而抽象类型的合适是多态抽象


3.在学习是应注意从具体知识中领悟抽象思维,在应用时注意用抽象理论来指导具体实践。

类似地,软件开发也是如此,从具体需求中构建出抽象模型,再根据抽象模型来完成具体实现,因此,在设计阶段愁绪类型尤为重要

,在实现阶段是具体类型更为重要


4.不要过度设计,视具体情况


5.接口的意义在于:提供者不是擅作主张,而是推迟决定,让客户选择实现方式。

抽象类的意思在于:父类推迟决定,让子类选择实现方式。


6接口继承不是为了代码重用,而是为了被重用。


7是否有必要愁绪建模,关键看项目需求。如果需求简单而稳定,一步到位又何尝不可?甚至软件的开发效率和运行效率还是高,

如果需求复杂而多变,引入抽象就磨刀不误砍柴工。毕竟抽象不是目的而是手段,对它片面的追求反而导致过度设计。


8针对接口编程,它有一种建立于数据抽象之上的形式,能让用户只关心抽象数据类型和API接口而无视其具体实现。不过,它至少

有两大局限、其一,虽然在接口不变的情况下,实现代码的改变不会影响客户代码,但需要重新编译,对于需要头文件的C++来说,

则需要更多的编译连接时间。其二,虽然相同的接口可以有多实现方法,但他们不同同时存在,更无法动态切换,于是,一种建立于多态抽象

之上的形式应运而生。它把握抽象数据类型隐藏在抽象类型的背后,从而提升抽象接口。同一个抽象接口允许许多种实现并存。且能动态切换

新增,删除或者改变某某种实现。


9没有抽象超类型的具体类型是常见有两种可能,一种是与世隔绝。一辈子几乎不出户,至多在小圈子里活动,典型的有非公有类,内部类,局部

类等等。一种是名满天下的。他的脸就是一张天然名片。


10我们谈到社会身份,不必拘于接口,甚至不必拘于抽象类型,关键是该类型是否具备足够的通用性和规范性。稳定性和独立性。灵活性和专业性

还是应了那句话:抽象不是目的而是手段


11抽象不是目的,而是手段。


12.具体类描述对象,重在实现。抽象描述规范,重载接口


13特别需要注意一种常用的说法:接口是为了克服java中抽象类型不能多重继承的缺点


14       接口                               抽象类                                          接口                            抽象类

关系  can-do                    is-a                            重用               规范                                代码                    

共性  相同功能               相同种类                   实现               多种                                 多级

特征 边缘特征               核心特征                   重点               可置换性                        可扩展性

联系 横向联系              纵向联系                    演变              新增类型                        新增成员


先从本性上看:接口是一套规范功能规范集合,因此相同的接口代表相同的功能,多表示can-do关系,常用后缀为-able的形容词命名

接口一般表述的是对象的边缘特征,或者说一个对象在某一个方面的特征,因此能在本质不同的类之间建立横向联系,由于一个对象可

拥有多方面的角色特征。故而可有多种接口,接口也可以描述对象的核心特征,但是一个类至多一个这样的接口。


与之相对,抽象类是一类对象的本质属性的凑效,因此相同的抽象基类代表同学的种类,多表示is-a关系,常用名字命名,抽象一般表述的是对象的核心

特征,只能在本质相同的类之间沿着继承树简历纵向联系,由于一个对象通常只有一个核心,故而只有一个基类。


再从目的,接口是为了规范重用,让一个规范有多种实现,看重的是可置换性;抽象类主要为了代码重用,也能规范重用,但更侧重代码重用,能逐级

分步实现基类的抽象方法,看重的是可扩展性。


接口由于被广泛采用的规范,相当于行业标准,一确定不能轻易修改,一旦广泛采用。他的任何改动包括增加接口都会波及整个系统,必须谨慎。

抽象类则没有那么困难。二是可以随意增加方法。所以子类自动扩充


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tof21

支持原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值