当前位置: 首页 > web >正文

java类与类之间的关系

  • 依赖:少了你就做不了,你用了我的对象,一个类作为另一个类的构造函数参数、方法参数、方法返回值、方法内局部变量,一个类在方法中使用了另一个类的对象
  • 关联:一个类的对象作为另一个类的成员变量,箭头指向被引用的类
  • 聚合:大雁和雁群一样,无共同生命周期
  • 组合:有共同的生命周期,你没了我也没了
  • 泛化:继承关系
  • 实现:接口和类

1. 依赖关系 (Dependency)

// 情况1: 作为构造函数参数
class Car {private Engine engine;public Car(Engine engine) {  // 依赖Enginethis.engine = engine;}
}// 情况2: 作为方法参数
class Driver {public void drive(Car car) {  // 依赖Carcar.start();}
}// 情况3: 作为方法返回值
class CarFactory {public Car produceCar() {  // 依赖Carreturn new Car(new Engine());}
}// 情况4: 作为方法局部变量
class Mechanic {public void repair() {Tool tool = new Tool();  // 依赖Tooltool.use();}
}// 情况5: 方法中使用另一个类的对象
class Person {public void travel() {Car car = new Car(new Engine());  // 依赖Car和Enginecar.start();}
}

2. 关联关系 (Association)

class Student {private Teacher teacher;  // 关联Teacher (成员变量)public void setTeacher(Teacher teacher) {this.teacher = teacher;}
}class Teacher {// 教师可以有学生,但这里不强制持有学生引用
}

3. 聚合关系 (Aggregation)

class GooseGroup {  // 雁群private List<Goose> geese;  // 聚合Goose (大雁可以独立存在)public GooseGroup(List<Goose> geese) {this.geese = geese;}
}class Goose {// 大雁可以独立于雁群存在
}

4. 组合关系 (Composition)

class Human {  // 人private Heart heart;  // 组合Heart (心脏不能独立于人存在)public Human() {this.heart = new Heart();  // 生命周期绑定}
}class Heart {// 心脏不能独立于人存在
}

5. 泛化关系 (Generalization)

class Animal {  // 父类public void eat() {System.out.println("Eating...");}
}class Dog extends Animal {  // 继承Animalpublic void bark() {System.out.println("Woof!");}
}

6. 实现关系 (Implementation)

interface Flyable {  // 接口void fly();
}class Bird implements Flyable {  // 实现Flyable接口@Overridepublic void fly() {System.out.println("Bird flying");}
}class Airplane implements Flyable {@Overridepublic void fly() {System.out.println("Airplane flying");}
}

UML关系图示对应

依赖(Dependency): ---->
关联(Association): ——>
聚合(Aggregation): ——◇
组合(Composition): ——◆
泛化(Generalization): ——▷
实现(Implementation): - - -▷

http://www.xdnf.cn/news/10104.html

相关文章:

  • 黑马k8s(十七)
  • KVM——CPU独占
  • 几个易混淆的不定积分公式记忆方法
  • 如何解决MySQL Workbench中的错误Error Code: 1175
  • USB充电检测仪-2.USB充电检测仪硬件设计
  • 写作-- 复合句练习
  • Python Day38
  • 特伦斯 S75 电钢琴:重塑音乐感知,臻享艺术之境
  • ADUM3201ARZ-RL7在混合动力电池监控中的25kV/μs CMTI与系统级ESD防护设计
  • Tornado WebSocket实时聊天实例
  • 58-dify案例分享-用 Dify 工作流 搭建数学错题本,考试错题秒变提分神器-同类型题生成篇
  • PHP学习笔记(十一)
  • 顶会新热门:机器学习可解释性
  • VScode-使用技巧-持续更新
  • 鸿蒙OSUniApp智能商品展示实战:打造高性能的动态排序系统#三方框架 #Uniapp
  • Kotlin JVM 注解详解
  • MySQL之数据库的内嵌函数和联合查询
  • Dify理论+部署+实战
  • 利用计算机模拟和玉米壳废料开发新型抗病毒药物合成方法
  • 详解Seata的核心组件TC、TM、RM
  • YOLOv8分割onnx实战及tensorRT部署
  • 黑森林实验室 FLUX.1Kontext:革新图像修改的 AI 力量
  • React 事件处理与合成事件机制揭秘
  • 计算机视觉入门:OpenCV与YOLO目标检测
  • 优化版本,增加3D 视觉 查看前面的记录
  • MySQL 的 super_read_only 和 read_only 参数
  • 板凳-------Mysql cookbook学习 (九)
  • MQTT的Thingsboards的使用
  • WebFuture:设置不自动删除操作日志
  • Celery简介