Q 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.也就是说聚合说的是一种部分与整体的关系,而当部分离开整体时,两者都还有原来的实际意义.聚合是一种很弱的关联关系.
组合:与聚合相比,组合描述的是这样的关联关系,部分离开整体后就没有实际意义了.所以我们说组合是一种很强的关联关系.
分享到:
相关推荐
【描述】:这是一份精心整理的JAVA和JAVAEE面试题集锦,包含了我在多次面试过程中遇到的各类问题,旨在为准备面试的朋友提供全面且实用的参考资料。这份文档将帮助你深入了解Java编程语言以及Java Enterprise ...
java面试笔试题库java学习比较开发教程互联网公司面试资料大全合集: 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张图解...
JavaEE面试宝典是每一位Java开发者在求职过程中必备的参考资料,涵盖了从基础知识到高级技术的全方位面试准备。这里,我们将深入探讨其中的关键知识点,帮助你更好地理解和掌握。 首先,我们从基础开始。Java语言的...
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张...
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...
java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188) 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring...
Java开发校招面试题库是互联网学习求职神器牛客网针对广大求职者整理的一套面试资源,它包含的不仅是题目和答案,还有详细的解析,帮助求职者全面理解和掌握知识点,为应聘Java开发岗位的校招面试做好充分准备。...
在本段内容中,涉及到JavaEE面试中常见的知识点,包括Java Web技术、集合框架、异常处理、多线程、设计模式、数据库操作等方面。以下是详细的知识点梳理: Servlet生命周期:Servlet的生命周期包括初始化(init)、...
这份文档旨在整理和复习这些关键知识点,帮助开发者在面试和日常工作中提升技能。 ### 1. JVM (Java虚拟机) JVM是Java程序的运行环境,它负责将字节码转换为机器码执行。JVM的内存结构对性能优化有着直接影响。 #...
2018 年蚂蚁课堂(每特教育) Java工程师面试宝典-V1.0.docx。 Java高级工程师面试宝典 该面试宝典由蚂蚁课堂创始人-余胜军原创整理 内容含括了:JavaSE、JavaEE、微服务、分布式、项目等。 java
Java 面试题整理 下面是对给定文件的详细知识点总结: 1. J2EE 是什么? 答:J2EE 是 Sun 公司提出的多层、分布式、基于组件的企业级应用模型。在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又...
这是本人通过面试经历和网上面试者的面试整理出的一份javaee最新面试题,涵盖了从java基础到系统架构的所有面试题,并且配有详细的解答和分析,是做java开发人员的面试必备宝典。
该宝典系统地整理了Java初级,中级,高级的基础知识,代码质量,解题思路,优化效率等面试要点,面试的基础知识从编程语言,数据结构及算法三方面总结程序员面试知识点,世间事,很多都可投机取巧,但技术却必须靠日积月累的...
本资料详细整理了JavaSE、JavaEE、JavaWeb、JDBC、XML编程、计算机网络、操作系统、算法与数据结构、设计模式以及场景题等多个方面,旨在帮助求职者全面准备Java相关岗位的面试。 1. JavaSE部分 - Java基础:这...
### Java面试题:JVM篇 #### Java内存区域 Java内存区域主要指JVM在执行Java程序过程中管理的内存空间,具体分为以下几个主要区域: 1. **程序计数器(Program Counter Register)**:是当前线程所执行的字节码的...
### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...
Java工程师面试题目通常涵盖多个方面,包括基础语法、面向对象编程、集合框架、多线程、JVM内存模型、异常处理、I/O流、网络编程、数据库操作、设计模式、Spring框架、JavaEE相关技术(如JSP)以及最新的技术趋势,...
4. **Java**:这是核心标签,意味着所有的面试题都与Java语言相关,可能包括了JavaSE、JavaEE以及相关的开源框架和工具。 根据压缩包子文件的文件名称“面经”,我们可以推断这是一份集成了众多面试经验的文档,...
#### 1.5 JavaSE.JavaEE和JavaME有什么区别? - **Java SE (Standard Edition)**:标准版,提供核心 Java 技术,包括基本的类库和开发工具,适用于桌面应用程序开发。 - **Java EE (Enterprise Edition)**:企业版...