我们总是想尽可能地让自己的代码变的简洁,这便需要重复运用实现码。JAVA提供了这种方式,其途径有两种:组合和继承,假设有一个类为A,A有一个行为doSomething(),还有一个类B,不也想dosomething,那么你可以在B里产生一个方法doSomethingToo( A.doSomething(); )。这叫做组合。继承是另外一种方法,你可以直接用关键词extends,让B继承自A,那么你不用特殊额外表达,B在外界看来也是有doSomething的能力的。那么我们要问,我们什么时候要组合,什么时候用继承呢?BRUCE讲,当Bis a A的时候我们用继承。这不太好理解,我们再举个MM的例子。MM具备吃饭(eatYou( 进食;消化))的行为,MM衍生开来有好色的MM、爱打屁的MM等,但她们都是MM,也就是isa的关系,这个时候你要设计好色的MM的时候就用继承,用extends。而GG不是MM,但是GG is like a MM,因为GG也可以吃饭。这个时候我们就不用再去写eatYou()这个方法了,直接在GG这个类里写eatYou(MM.eatYou(); )那么,GG也具备了进食、消化的功能。其实我们要常常用到组合,在程序里,用继承的地方是比较少的。