类之间的6种关系

文章详细阐述了面向对象设计中的几种关系,包括依赖、关联、聚合、组合以及继承和实现。依赖是最低级别的关系,耦合度较低;关联是对象间的一般关系,可双向或单向;聚合是整体与部分的关系,部分可独立存在;组合是更强烈的聚合形式,部分对象的生命周期与整体一致。继承用于功能扩展,实现则涉及接口的使用。这些概念是理解和应用设计模式的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


下面依赖关系从低到高,耦合度越来越高。

5.1.1. 依赖(Dependency)

在A类中调用B类的方法,在MyClass中方法的参数是另外一个类,在类中调用了另外类的方法。
public class MyClass {
public void doSomething(DependencyClass dependency) {
dependency.doSomething();
}
}

public class DependencyClass {
public void doSomething() {
// 实现特定的功能
}
}

5.1.2. 关联(Association)

在A类中的成员变量是B类。Student类的成员变量是Classroom对象。
public class Student {
private String name;
private Classroom classroom;

public Student(String name) {
    this.name = name;
}

public void setClassroom(Classroom classroom) {
    this.classroom = classroom;
}

}

public class Classroom {
private List students;

public void addStudent(Student student) {
    students.add(student);
    student.setClassroom(this);
}

}

5.1.3. 聚合(Aggregation)

A类中的成员变量是个集合。
public class University {
private List departments;

public void addDepartment(Department department) {
    departments.add(department);
}

}

public class Department {
private University university;

public Department(University university) {
    this.university = university;
}

}

5.1.4. 组合(Composition)

关联多个对象,有单个对象,有集合对象
public class Car {
private Engine engine;
private List tires;

public Car() {
    engine = new Engine();
    tires = new ArrayList<>();
    for (int i = 0; i < 4; i++) {
        tires.add(new Tire());
    }
}

}

public class Engine {
// 引擎的具体实现
}

public class Tire {
// 轮胎的具体实现
}

5.1.5. 继承(泛化)(Inheritance)

B类继承A类,进行功能扩展,有extends关键字判别。
public class Animal {
public void eat() {
// 具体实现
}
}

public class Dog extends Animal {
public void bark() {
// 具体实现
}
}

5.1.6. 实现(Implementation)

实现接口,有implements关键字判别。
public interface InterfaceA {
void methodA();
}

public class ClassA implements InterfaceA {
public void methodA() {
// 具体实现
}
}

5.1.7. 关联、聚合、组合的区别

这三种代码很相近,但语义不同,也就是表达的意思,关注的重点不同。
关联是一种关系,表示两个或多个对象之间的联接。它描述了对象之间的一般关系,可以是单向的或双向的,可以有一对一、一对多或多对多的关联关系。关联关系通常具有较松散的耦合,对象之间可以独立存在,关系可以随时建立或断开。关联关系通常通过对象之间的引用或指针来实现。
聚合是一种关系,表示整体对象拥有部分对象。聚合是一种弱关系,部分对象可以独立于整体对象而存在。整体对象可以包含多个部分对象,同时部分对象也可以属于其他整体对象。聚合关系是一种"has-a"关系,整体对象具有部分对象。部分对象的生命周期不依赖于整体对象,即可以在整体对象存在之前或之后创建和销毁。
组合是一种关系,表示整体对象由部分对象组成,且部分对象的生命周期与整体对象一致。组合是一种强关系,部分对象不能独立于整体对象存在。整体对象包含了部分对象,并负责管理其生命周期。组合关系是一种"owns-a"关系,整体对象拥有部分对象。部分对象的创建和销毁由整体对象负责,与整体对象的生命周期紧密相关。
小结:
 关联关系描述了对象之间的一般关系,两者可以独立存在,关系可以随时建立或断开;
 聚合关系是整体拥有部分的关系,部分对象可以独立存在于整体对象之外;
 组合关系是整体由部分组成的关系,部分对象的生命周期与整体对象一致,由整体对象负责管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值