- 依赖(Dependency)关系:一种使用关系,它是对象之间耦合度最弱的一种关联方式
package com.fish.relation.dependency;
public class MobilePhone {
public void transfer(){
}
}
package com.fish.relation.dependency;
public class Person {
private String name;
public void call(MobilePhone mobilePhone) {
mobilePhone.transfer();
}
}
- 关联(Association)关系:对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系
- 关联关系分为一般关联关系、聚合关系和组合关系
- 关联可以是双向的,也可以是单向的
package com.fish.relation.association;
import java.util.List;
public class Student {
private String name;
private List<Teacher> teachers;
public void study() {
}
}
package com.fish.relation.association;
import java.util.List;
public class Teacher {
private String name;
private List<Student> students;
public void teaching() {
}
}
- 聚合(Aggregation)关系:强关联关系,是整体和部分之间的关系,是has-a的关系
package com.fish.relation.aggregetion;
public class Teacher {
private String name;
public void teaching() {
}
}
package com.fish.relation.aggregetion;
import java.util.List;
public class University {
private List<Teacher> teachers;
}
- 组合(Composition)关系:表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是contains-a关系
package com.fish.relation.composition;
public class Head {
private Mouth mouth;
}
package com.fish.relation.composition;
public class Mouth {
public void eat() {
}
}
- 泛化(Generalization)关系:对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系, 是is-a的关系
package com.fish.relation.generalization;
public class Person {
private String name;
private int age;
public void speak() {
}
}
package com.fish.relation.generalization;
public class Student extends Person{
private long studentNo;
public void study() {
}
}
package com.fish.relation.generalization;
public class Teacher extends Person{
private long teacherNo;
public void teaching() {
}
}
- 实现(Realization)关系:接口与实现类之间的关系
package com.fish.relation.realization;
public interface Vehicle {
public void move();
}
package com.fish.relation.realization;
public class Ship implements Vehicle {
@Override
public void move() {
}
}
package com.fish.relation.realization;
public class Car implements Vehicle {
@Override
public void move() {
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律