`
Java2008gjy
  • 浏览: 3472 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java EE 面试题目

阅读更多
09: 请谈谈你对'is a'和'has a'的理解?也就是继承与组合的理解?组合与聚合又有什么不同?
A 09: 'is a'的关系描述的OO中的继承,而'has a'描述的是OO中的组合方式.通过继承与组合,我们都可以在新类中使用已有代码.这里我们也说下,在OO中通常有两种主要的代码重用的方式:类的继承与对象的组合.

    继承是单向的.例如,Hourse is a Building.而我们并不能说一个Building就一定是House.在Java中,我们用extends来表达继承.
    组合:我们还用上面的例子来说,我们可说House里has a  Bathroom,但我们不能说House就是一个Bathroom.说白了,组合就是在一个类中用一个instance variables来指向其它类的对象.我们例子中的House类就有一个instance variable,它指向Bathroon对象.
Q. 组合和继承,你更喜欢用哪一个?
    这方面的一个准则是,我们只有在某一个类很明显的是另一类的子类时才用继承,其它场合尽量避免.

    1,不要仅仅为了代码重用而使用继承.过度使用继承会在父类有变动时也牵连到过多的子类.
    2,也不要仅仅为了多态而使用继承,而使用接口(Interface).
Q. 聚合与组合有什么不同?
    聚合:聚合描述的是这样一种association,在这个association里,一个类是属于一collection.也就是说聚合说的是一种部分与整体的关系,而当部分离开整体时,两者都还有原来的实际意义.聚合是一种很弱的关联关系.
    组合:与聚合相比,组合描述的是这样的关联关系,部分离开整体后就没有实际意义了.所以我们说组合是一种很强的关联关系.

[align=center][/align]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics