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]
分享到:
相关推荐
Java EE面试题集,这里面都是有关面试的一些题目,希望能帮到大家
Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集(修正版)Java_EE面试题集...
Java EE最新面试题集,希望对大家有帮助
很全面的java面试题集,适合初涉java领域的求职者。
java面试题集合,基础部分,数据库,算法
java se ee部分面试题实际面试存留的面试题目,html script ajax等等
收集的一些java常用的面试题目,设计到J2EE/Oracle/XML等,希望对即将面试和准备换工作的人有所帮助。
JAVA EE面试题大全,里面含有常见的JAVA EE框架面试题目
主要讲解 Java初级程序员 面试的题目 希望大家热情下载
java2ee开发的面试题目!包括jsp servlet javaBean struts1 hibernate spring
125条常见的java面试笔试题大汇总 ,其中包括了java se和java ee方面的题目 很详细