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企业级应用开发领域的一本面试指南,它涵盖了大量经典面试题,旨在帮助求职者全面了解并掌握Java EE的相关技术。Java EE,即Java Platform, Enterprise Edition,是Java平台在企业级...
从给定的文件信息中,我们可以提炼出一系列与Java EE相关的知识点,涵盖了面试笔试题目的范围,适合初学...以上知识点覆盖了Java EE面试题目的多个方面,对于初学者和求职者来说,深入理解和掌握这些概念是十分重要的。
### Java EE面试题集知识点详解 #### 基础问答:可继承的类与抽象类接口的区别 在Java EE领域,理解基础概念是至关重要的。首先,了解哪些类可以被继承,是每个开发者的基本功。根据给定内容,`java.lang.Thread`...
Java程序员面试宝典和Java EE面试题是两本至...通过深入学习这些知识点,并结合《java程序员面试宝典》和《疯狂Java EE面试题》提供的实例和题目,程序员可以有效地提升自己的面试竞争力,更好地应对面试中的各种挑战。
Java程序员在面试中可能会遇到各种各样的问题,涵盖了语言特性、设计原则、异常处理、类库使用等多个方面。以下是对给定题目的一些详细解释: 1. **面向对象的特征** - **抽象**:抽象是将复杂的问题简化,关注...
【描述】:“java对日外包面试题”表明面试将特别关注那些在跨文化环境中工作时,能够有效沟通和协作的能力。这不仅包括Java编程技术,如面向对象设计、异常处理、多线程、集合框架等,还涉及到理解日本商业礼仪和...
【Java最新面试题目解析】 1、面向对象的特征: 面向对象编程(OOP)的核心特征包括抽象、继承、封装和多态性。 - 抽象:抽象是将复杂问题简化的过程,关注对象的关键特性和行为,忽略不重要的细节。抽象分为过程...
根据给定的文件信息,我们将深入探讨其中提及的关键知识点...通过以上对给定文件内容中提到的知识点的详细解释,我们可以更好地理解Java语言的核心概念和技术特点,这对于准备Java EE相关面试的人来说是非常有价值的。
《Java面试题集(最全版).pdf》是一份全面涵盖Java相关技术及面试知识点的综合资料,旨在帮助Java开发者和求职者准备面试,提升专业技能。这份文档分为多个章节,涉及不同领域的知识,包括技巧篇、智力篇、Java基础、...
本资料包"适合应届生的java面试题集"包含了近年来的Java面试热点问题,旨在帮助应届毕业生更好地准备面试,提升自己的竞争力。 1. **基础概念** - Java的特性:了解Java的跨平台性、面向对象、自动内存管理(垃圾...
在Java面试中,经常会遇到一系列关于Java基础知识、JSP和Servlet技术、J2EE相关知识以及其他相关领域的题目。以下是一些关键知识点的详细解释: 1. **Java基础知识** - **基本数据类型**:Java有8种基本数据类型,...
这份"JAVA面试题目集合word文档"涵盖了多个关键领域,包括Java基础、Servlet、JDBC与JDO、EJB、J2EE、MVC架构以及设计模式和JavaScript。下面将详细讨论这些领域的重点知识。 首先,Java基础是任何Java开发者必须...
Java面试题全集中涵盖了许多Java Web和Web Service相关的知识点,这些是Java开发人员在面试过程中经常遇到的主题。让我们深入探讨一下这些关键领域的核心概念和重要问题。 **Servlet** Servlet是Java编程语言中用于...
EJB(Enterprise JavaBeans)是Java EE中用于构建企业级应用的组件模型,Spring框架则是一个轻量级的替代品,提供了依赖注入、AOP(面向切面编程)等功能。 数据结构、算法及计算机基础部分:这部分涉及到排序算法...
7. **面试题集**: "面试技术问题百问百答.doc"和"125个java面试题.pdf"是准备面试的重要资源。这些问题通常涵盖了上述所有知识点,以及一些高级主题,如设计模式、并发编程、JVM内存模型、性能优化等。熟悉并能熟练...
Java作为一门广泛使用的编程语言,其面试题集涵盖了多个方面的知识。以下是对这些知识点的详细说明: 1. **MVC模式**:Model-View-Controller(模型-视图-控制器)是一种软件设计模式,用于分离应用程序的数据逻辑...
【标题】:2EE高级软件工程师面试题集 【描述】:这是一份关于Java面试的集合,涵盖了基础部分、高级知识、数据库管理和算法等内容,旨在帮助应聘者准备J2EE高级软件工程师的面试。 【标签】:JAVA、面试 【内容...
在Java面试中,数据库部分是不可或缺的知识点,因为大多数企业应用程序都依赖于数据库来存储和检索数据。...阅读和实践提供的"java私塾面试题----数据库部分.pdf"文档将有助于深化这些概念的理解。