类与类之间的关系

作为一个java新手,可能要花很长时间才能真正的理解类和对象所代表的含义,一方面,我们要解析需求,判断怎样分配类和对象,另一方面,在编写程序时,难免需要将两个甚至多个类联系起来,如何正确的分析类与类之间关系有利于我们对代码的建立。但是不同的类与不同的类之间时常有着不同的关系,因此就需要我们能够准确把握它们之间的关系。

首先先将类与类之间的关系建立一个直角坐标系,它们的关系大致可以从两个层面来分析,一方面是x轴方向(水平横向关系),大致可以分为两种关系,一种是依赖关系,一种是关联关系(关联关系---(强关联)-->聚合关系-----(强聚合关系)-->组合关系)。

横向关系

依赖关系

什么叫依赖关系?当一个类的方法中需要借用另一个类的对象时,两个类就具有依赖关系。例如:当一个人(Person)需要喝水(drink())时需要借助杯子对象(Cup),Person和Cup就属于依赖关系。

关联关系

关联关系包括1:1,1:n,n:n。一个茶杯对应一个相应的盖子就是一对一。一个部门对应多个员工就是1:n。货物和订单的关系i就是n:n。

聚合关系(has-a)

聚合关系又叫包含关系。has-a,意为有一个。即当一个类的对象作为另一个类的成员变量出现时,两者即具有包含关系。例如:计算机和cpu的关系。

组合关系

组合关系又叫强包含关系。它是聚合关系的强关系。聚合关系不用限定两个类对象之间的生命周期,但是组合关系就对生命周期有一定的限定,两者必须“同生同死”,就是说当一个对象销毁时,和它相关的另一个对象也同时销毁。例如:人和大脑关系。

纵向关系

(extends)继承关系(is-a)

继承作为java三大特性之一(封装、继承和多态),能继承是具有继承关系的前提,同时多态也是以继承为前提的(重写重载都是以继承关系为前提的),由此可见继承关系的重要性。

子类在继承父类时,可以拥有父类除private修饰之外的所有属性和方法(但是不包括父类构造方法)。当子类继承完父类后,子类创建对象时,会首先进入子类相应的有参或者无参构造器。如果子类的构造方法中的第一条包含super(args...)语句,则执行它,否则执行默认的super()无参方法调用父类的无参构造器。举例如图。

在子类继承完父类后。子类可以调用父类除private修饰的所有方法(父类构造器除外)、自身的方法、以及自己重写后的方法。

父类只能调用自身的方法。

 

(implements)实现关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值