一边选节翻译Core Java一边加入自己的理解。
类与对象
类与对象的关系就像是模子和饼干的关系。所有对象是特定类的实例,一类对象具有相同的行为,这种行为称之为方法。在使用对象的时候,要清楚:
对象的行为:对象可以有怎样行为?怎样的行为可以影响到对象?
对象的状态:调用方法的时候,对象作何反应?
对象的身份:某个对象与其他对象有相同的行为和状态,为什么这个对象是独一无二的?
以上所列举的对象的要素可以相互影响。比如,对象的状态可以影响对象的行为,就像同一个人在清醒和醉酒状态下做的事是不一样的。
那么,如何从复杂的系统中抽离出类呢?最简单的是,用自然语言描述系统,试试看能不能找到一些名词和动词。例如在一个公交系统中,马路、车、红绿灯就是名词,而行使、亮灯等就是动词,将名词和动词替换成相应的类和方法,就是抽象过程。当然这种方法不是万能而且颇有缺陷,但有助于思考。
类与类的关系
最常见的类与类的关系分为:
dependence, use-a
aggregation, has-a
inheritance, is-a
常翻译成依赖、聚合、继承。
如果一个类的方法中必须另一个类作为参考,那么成为依赖。
聚合是较难理解的,容易和合成(Composition)混淆。合成才是严格的has-a关系,就像人有头、身躯、四肢。如果人的生命结束,人身上任何一个部位都会随着结束生命周期。电脑不一样。电脑有CPU,但是很难说,电脑坏了一定是CPU坏了;另外,电脑组装的时候,CPU自身早就在Intel的工厂组装好送到电脑装配厂了。所以,区别合成和聚合,主要是:类之间的生命周期是否紧密关联;一个类是否由另一个类初始化。
|
|