面向对象编程之类的关系

类之间的关系:

1、依赖关系:

        1、定义:类A为完成某个功能,会引用类B,使用类B提供的功能,则称类A依赖类B

        2、体现:在代码上,类A的某方法中的参数、局部变量、返回值或静态方法的调用,使用了类B,则表示类A引用了类B

        3、生命周期:

                1、关系的产生:包含该关系的方法被调用时,开始产生依赖关系

                2、关系的销毁:随着该方法结束,两者之间的依赖赖关系随之结束

        3、特点:

                1、耦合程度:耦合最小的一种关系,即类B变更代码时对类A的影响很小

                2、关系持续时长:持续时间短,仅在方法被调用时产生,方法结束则依赖关系结束。

2、关联关系:

        1、定义:表示类A与类B之间是有一定关联,但是这种关联的程度可能是很明显,也可能不明显。

        2、体现:在代码上,类B作为类A的成员变量(即类A持有类B的实例)

        3、生命周期:(作为成员变量)

                1、关系的产生:

                        方式1、在类A的构造方法中创建并注入类B的实例,这种方式会随着类A实例的创建而产生两者的关联关系(即组合关系)

                        方式2、通过特定的注入方法将类B实例注入到类A实例中,这种方式会随着注入方法的调用而产生两者的关联关系

                        方式3、当作为成员变量的可被外部类直接访问,直接对成员变量赋值时两者关系产生

                2、关系的销毁:

                        1、类A实例被垃圾回收时,两者关系结束(包含上面关系产生的方式1中,或类B实例只被类A实例所持有(唯一))

                        2、通过特定的清理方法,将类A中持有类B的成员变量置为null,当该清理方法调用后,两者关系结束

                        3、当作为成员变量的可被外部类直接访问,直接对成员变量置为null时两者关系结束

        4、特点:

                1、耦合程度:耦合比依赖关系更强,即类B变更代码时对类A的影响有一定影响

                2、关系持续时长:持续时间中等

        5、分类:根据关联程度,从语义上可分为:

                1、聚合关系:在关联关系下的两个类,若在语义上符合 集体与个体(整体与部分)之间的关系,在语义上强调个体能脱离集体而独立存在。即类A实例不负责类B实例的生命周期

                2、组合关系:在关联关系下的两个类,若在语义上符合 个体与组成部分(整体与部分)之间的关系,在语义上强调组成部分必须依靠个体,不能独立存在(同生同灭)。即类A实例负责管理类B实例的生命周期

                3、普通依赖关系:在关联关系下的两个类,若在语义上不符合聚合关系和组合关系的情形

        6、聚合与组合的区别:

                1、聚合没有组合关系紧密

                        1、聚合关系的类具有不同的生命周期,而组合关系的类具有相同的生命周期

                        2、聚合关系的类的实例可以独立存在,组合关系的类的实例不能独立存在

                2、信息的封装性不同:

                        1、对于客户端而言,具有聚合关系的两个类A,类B可以独立存在,因此可以同时访问这两个类的实例

                        2、对于客户端而言,具有组合关系的两个类A, 类B,它必然只能访问到类A的实例(类B的实例被封装起来了)。

                3、聚合关系中的成员变量可以独立存在,而组合关系中的成员变量必须依赖于集体才有意义。

3、泛化关系:

        1、定义:类与类之间的继承关系,类与接口之间的实现关系

        2、体现:在代码中,一个类继承另一个类,或实现某接口

        3、生命周期:

                1、关系的产生:

                        1、两者的关系会在子类或实现类的进行类加载时建立起来

                2、关系的销毁:

                        1、两者的关系会在子类或实现类被卸载时(无任何强引用的情况下GC)结束

        4、特点:

                1、耦合程度:高,即类或接口变更代码时必定会引起另一个类的修改

                2、关系持续时长:持续时间较长

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值