Java学习第8天-类之间的六大关系

类之间的六大关系

  有些朋友可能和我一样,写了不少的代码,很少去思考,类之间的关系有哪些呢?今天学习后一并总结分析。

  • 依赖

我们说类中用到了对方,那么他们之间就存在依赖关系。

举例:

public class PersonServiceBean {
private PersonDao personDao;//
public void save(Person person){}
public IDCard getIDCard(Integer personid){}
public void modify(){
Department department = new Department();
}
}
public class PersonDao{}
public class IDCard{}
public class Person{}
public class Department{}
如代码中,PersonServiceBean就依赖PersonDao、IDCard、Person、Department四个类。
一个类用到另一个类一般有如下四种情况:
  1. 是类的成员属性,比如PersonDao;
  2. 是方法的返回类型,比如IDCard;
  3. 是方法接收的参数类型,比如Person;
  4. 是方法中的局部变量,比如Department。
  • 泛化

   泛化关系实际上就是继承关系。如果A类继承了B类,我们就说AB存在泛化关系。

举例:

public abstract class DaoSupport{
public void save(Object entity){
}
public void delete(Object id){
}
}
public class PersonServiceBean extends Daosupport{
}
  • 实现

   实现关系,实际上就是类和接口之间的关系。如果A类实现了接口B,我们就说A和B存在实现关系。

   举例:

public interface PersonService {
public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
public void delete(Interger id){}
}
  • 关联

    关联关系,实际上就是类与类之间的关系,关联具有导航性,即双向关系或者单项关系;

关系具有多重性:如“1”(表示有且仅有一个),“0...”(表示0个或者多个), “01”(表示0个或者一个),“n...m”(表示nm个都可以),“m...*”(表示至少m 个)。关系的理解,可以类比数据库中表的关系,有1对1、1对多、多对1、多对多。

举例:一个老师可以有多个学生,一个学生可以有多个老师,这就是典型的多对多关系。

单向一对一关系
public class Person {
private IDCard card;
}
public class IDCard{}
双向一对一关系
public class Person {
private IDCard card;
}
public class IDCard{
private Person person
}
  • 聚合
聚合关系( Aggregation )表示的是 整体和部分 的关系, 整体与部分可以分开
合关系是关联关系的特例 ,所以他具有关联的导航性与多重性。
如:一台电脑由键盘 (keyboard) 、显示器 (monitor) ,鼠标等组成;组成电脑的各个
配件是可以从电脑上分离出来的,如下图
  • 组合
组合关系:也是整体与部分的关系,但是 整体与部分不可以分开
如聚合关系中电脑的鼠标的关系是聚合关系,如果是一体机,则关系升级为组合关系,
再看一个案例:在程序中我们定义实体: Person IDCard Head, 那么 Head
Person 就是 组合, IDCard Person 就是聚合。
举例:
public class Person{
private IDCard card;
private Head head = new Head();
}
public class IDCard{}
public class Head{}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值