Java组合与继承之间的选择

组合和继承都允许在新的类中放置子对象,组合是显示的这样做,而继承则是隐式的做。

  组合技术通常用于想在新类中使用现有类的功能而非他的接口。在新类中嵌入某个对象,让其实现所需要的功能,但新类的用户看到的只是新类所定义的接口,而非所嵌入对象的接口。为了取得这样效果,需要在新类中嵌入一个现有类的parivate对象。

  有时,允许类的用户直接访问新类中的组合成分是极具意义的;也就是说,将成员对象声明为public。如果成员对象自身都隐藏了具体实现,那么这种做法是安全的。当用户能够了解到你正在组装一组部件,会使得端口更加易于理解。Car对象就是一个很好的例子:

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-07-31 11:15:03

Java组合与继承之间的选择的相关文章

关于Java中的继承和组合的一个错误使用的例子

关于Java中的继承和组合的一个错误使用的例子 相信绝大多数人都比较熟悉Java中的「继承」和「组合」这两个东西,本篇文章就主要就这两个话题谈论一下.如果我某些地方写的不对,或者比较幼稚,论证不清晰,欢迎大家留言指正. 什么是「组合」和「继承」 假设有2个class:A和B: 如果class A extends B 那么我们就说A继承B,A是子类,B是父类,这种情况就是继承. 如果A中有一个属性的类型为B,那么我们就说这种情况就是组合. 分别在什么情况下使用 回想一些我们一般会在什么情况下考虑这

Java中类与类之间的关系

Java中类与类之间的关系存在以下关系: 1.泛化(Generalization) 很简单,就是我们常说的继承.是说子类获得父类的功能的同时,还可以扩展自己的功能. 如图: Java代码中表现为:extends和implements 2.依赖(Dependency) 两个相对独立的咚咚(A和B),当A负责构造B时,A与B形成依赖关系,即A使用B. 如图: Java代码中的表现为局部变量,方法的参数,以及对静态方法的调用 3.关联(Association) 两个相对独立的咚咚(A和B),当A对象持

如何在Rails和Grails之间做选择?

自从Rails和Grails进入人们的视野以来,有关Rails和Grails之间的各种比较就没有停止过. 最近Stephan在其博客上给出了Rails和Grails的工作趋势图.从Rails和Grails工作趋势图中可以看出,Rails正处于快速上升期,Grails上升的趋势相对较缓. 但是他并没有对此图作出过多评论,正如他所说:"如果你想对这一趋势加以评论,我看还是免了吧.已经有很多相关讨论了,每个人都各持己见". 从另一个张图--Google趋势图,我们可以看看人们对Rails和G

Scala学习:使用组合与继承

组合与继承是利用其它现存类定义新类的两个方法.如果你接下来的工作主要是代码重用,通常你应 采用组合而不是继承.只有继承受脆基类问题之苦,这种情况你可能会无意中通过改变超类而破坏了子 类. 关于继承关系你可以问自己一个问题,是否它建模了一个is-a关系.Meyers,<Effective C++> [ Mey91]例如,说ArrayElement是Element是合理的.你能问的另一个问题是,是否客户想要把子类类型 当作超类类型来用.Eckel,<Thinking in Java>[

Java语言入门教程(十三):Java语言中继承中的构造方法问题

教程(十一)中,了解了Java语言中继承的基本概念.Java中类与类的继承 ,是单继承,主要目的是复用.子类对象可以复用父类中权限允许的属性和方法 ,所以子类的构造方法和父类的构造方法之间,有一定的调用关系,本文中将进 行详细介绍. 首先,需要记住一个事实:子类的任何一个构造方法,都将先调用父类某个 构造方法.如子类Trainer中的构造方法: public Trainer() { } 虽然这个构造方法的方法体中什么代码也没有写,但是也调用了父类 Employee的构造方法,默认调用的是Empl

java类的继承

java中的继承用extends关键字来实现,被继承的类叫做超类.父类.基类,实现继承的类称为子类.派生类. 子类是一种特殊的父类,因此可以看作父类是大类,子类是小类. extends实际上是拓展的意思,而父类和子类的关系实际上用拓展来解释似乎更加的恰当,子类在父类功能的基础上增加新的功能. 在继承中,除开父类的构造器以外,子类几乎可以继承父类所有的功能和属性. 每个类最多只能有一个直接的父类,可以有无限多个间接父类,就像人一样,只能有一个亲生父亲. 若一个类定义的时候没有显示定义直接父类,则默

(十三)java类的继承

     java中的继承用extends关键字来实现,被继承的类叫做超类.父类.基类,实现继承的类称为子类.派生类.     子类是一种特殊的父类,因此可以看作父类是大类,子类是小类.     extends实际上是拓展的意思,而父类和子类的关系实际上用拓展来解释似乎更加的恰当,子类在父类功能的基础上增加新的功能.     在继承中,除开父类的构造器以外,子类几乎可以继承父类所有的功能和属性.     每个类最多只能有一个直接的父类,可以有无限多个间接父类,就像人一样,只能有一个亲生父亲.  

帮忙看一下代码,问几个关于Java组合框的问题

问题描述 帮忙看一下代码,问几个关于Java组合框的问题 import java.awt.*; import javax.swing.*; public class JComboBoxExample extends JFrame { JComboBox comboBox1,comboBox2;//定义两个组合框 String cityNames[]={"北京","上海","重庆","南京","武汉",&qu

java关于大批量处理文件框架选择的问题

问题描述 java关于大批量处理文件框架选择的问题 项目要做关于对仗的业务,可能会大批量操作远程ftp上的文件, 请问有没有好一点的框架组合能处理这些 spring batch + quartz? hadoop? storm? 这些技术都没怎么用过 求建议 谢谢 新人 勿喷