有A和B两个类 在B类中创建A类的对像 可以调用A类中的方法.但是B类如果继承A类,也能达到一样的效果.  想问一下这两者有何区别? 谢谢..

解决方案 »

  1.   

    组合表示has-a的一种模型。也就是或在B类中有一个A类的对象。比如Car类和Engine类,汽车有一个引擎,但你用汽车类去继承引擎就不合理了。
    继承表示一种is-a的模型。也就是或如果B extends A,那么用汉语可以说B是一个A。比如类Monkey extends Animal,可以说猴子是一个动物。
      

  2.   

    如果B想拥有A的所有特性,提供A的所有接口,并且对A扩展,应该继承
    如果B只是用到了A的特性,并不是想对外提供A的接口,也不想扩展A,就没有必要继承
      

  3.   

    这是设计上的不同,一般情况下用组合比较好,耦合性较小些。但有时继承是必须的,比如如果B类想要使用A类中protected的方法和属性,当然这只是一个浅显的理由。
      

  4.   

    lz请仔细体会我在1楼的回答,那是这个问题的本质所在。你只要理解了,什么时候用继承什么时候用组合很简单的。
    -_-!!!感觉后面的回答让会让lz更加糊涂