java面向对象思维之继承 组合

[size=medium][color=blue] 在面向对象语言里面最经常就听到继承这个感念。也许因为是面向对象的原因吧!因为你最可能从实际生活中找出继承这个相关的关系。比如你某天从你父亲那里继承了一大笔钱。高兴吧!这里也出现了继承。难道这个继承概念和面向对象的继承概念一样吗?我认为在某种程度上你可以这么认为。那么我们来看看这个现实中继承的含义吧! 你为什么能够从你父亲那里继承一大笔钱呢?你会说因为他是我的父亲。没错。但是真正的话是因为你和你父亲有别人没有的关系。这种关系是父子关系。正因为这个关系才让你继承有意义。现在回到面向对象思维中的[b]继承[/b]:
它思维是父类中有一些或者全部的数据和行为可以通过继承关系让子类拥有。这个方向是单向的。也就是说如果A类是B类的父类的话,那么A类对应的某些或者全部数据和行为可以再B类中得到使用。(这里暂时不去详细考虑访问权限)。如果B类继承A类只是覆盖A类的方法。那么就意味着A类和B类是完全相同的类型。这个B类的对象就可以完全替代A类的对象。反之在B类中新增了接口或者叫扩展了接口那么就是不完全替代,因此父类无法访问新添加的方法。这里主要一个转型的概念。有向上转型和向下转型。向上转型的话可以理解为子类拥有父类的类型。这里随便说下如果你初始化一个子类的时候,其实它会先去将父类初始化,然后在初始化自己。
面向对象思维中的[b]组合[/b]:
组合其实也是一种很有意思的关系。这种关系在有些时候使用继承还是组合会让很多程序员困惑。因为继承可谓是面向对象的经典。但是组合则是更灵活。比如一辆车是由发动机,车胎,门等等组成。组合是将多个不同类的对象根据行为进行任意的组合。在这种组合其实也可能包含实现继承关系而得到的行为。某种程度上组合关系达到的行为包含了继承达到的行为。因此经常在使用的时候除非继承关系很明显否则还是使用组合比较好。
[/color][/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值