您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > java中isa和hasa
Java中is-a和has-a的区别1.“is-a”是继承的关系,比如人是动物,人和动物是继承的关系;2.“has-a”是聚合的关系,比如人有眼睛,人和眼睛是聚合的关系;3.如果一个类继承自另一个类,那么它们是“is-a”的关系,如果一个类的成员中引用了另一个类,那么它们是“has-a”的关系。is_a用于继承has_a是组合一个类中包含了其他类一般我们认为继承可以分为两种基本的形式:实现继承和接口继承。实现继承的主要目标是代码重用:我们发现类B和类C存在同样的代码,因此我们设计了一个类A,用于存放通用的代码。基于这种思路的继承称为实现继承。接口继承不同,它是基于现实生活中的语义的,表现了Isa的关系:我们认为存款帐户和结算帐户都是帐户的子类,这种继承我们称之为接口继承。注意,有些文章中一个类实现一个接口的行为定义为接口继承,这和这里的接口继承是不同的概念,为了区分两种概念,我们可以使用接口继承的另一种称呼-类型继承。继承的关键就在于如何灵活的运用两种继承方式。这里的接口的意思和Java或者C#中的interface有着不同。在此的接口表示的是一个类中所有公有的方法的签名。所以IsA关系是关于行为的。HasA关系,也称为对象组合。实际上,HasA关系有两种。第一种,静态HasA关系。这在UML中叫做组合(composition),比如“汽车has-a引擎”。此种关系很像聚集,除了‘部分’的生命周期由‘整体’控制。这种控制可能是直接的或者传递的。即‘整体’可能对创建或者销毁‘部分’具有直接的职责,或者它可能获得已经创建的部分,稍后传递给其它的假定对其有职责的整体。第二种,动态HasA关系。这在UML中叫做聚合(aggregation),比如“飞机场has-a飞机”。别忘了use-a是依赖关系
本文标题:java中isa和hasa
链接地址:https://www.777doc.com/doc-2880600 .html