【大话设计模式】附录A 笔记

***********************************************

继承


关于继承的三句话:

1. 子类拥有父类非 private 的属性和功能;简单说,公用的东西能继承,老爸自己的东西你不能继承,你爸的老婆一定不是继承成你老婆。

2. 子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;你自己可以添家当。

3. 子类还可以以自己的方式实现父类的功能(方法重写)。就是多态啦。


继承的缺点:

1. 父类变,则子类不得不变。

2. 继承会破坏包装,父类实现细节暴露给子类,这样就增大了两个类之间的耦合性。(继承显然是一种类与类之间强耦合的关系)

以上两点就是说,要是你爸是个淘气的老少年,一天一个花样,你天天跟着变也是闹腾。


用继承的条件:

当两个类之间具备‘is-a’ 的关系时,就可以考虑用继承了。而当两个类之间是 ‘has-a’ 的关系时,不适合用继承。比如:人有两只手,手不能继承人;飞机场有飞机,飞机不能继承飞机场。

***********************************************

多态


多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。


几点说明:

1. 子类以父类的身份出现,就是说这个函数算是父类的,实在父类里面声明的。可以想成,这个菜在祖传菜单里。

2. 子类在工作时以自己的方式来实现。就是说,这个函数是父亲提出来的,但是具体活怎么干是儿子自己琢磨着干的,这个菜的名字在菜单里,但是菜怎么烧看儿子的。

3. 子类以父类的身份出现时,子类特有的属性和方法不可以使用。烧菜的材料是老爸厨房里的,老爸厨房里只有花生油,儿子厨房里有橄榄油,那儿子烧这个菜就不能用自己的橄榄油,只能用老爸的花生油,不然穿帮了。


怎么认出来

怎么知道哪个函数是可以多态的呢,老爸列菜单的时候前面写了个‘virtual’. 只有这样的菜,儿子才能自己 override。


多态的原理

当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用。也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。

***********************************************

重构



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值