Java类之间的关系
1. 继承 (Inheritance)
定义: 表示“是...的一种”关系,子类继承父类的特征和行为。
// 定义一个抽象基类Animal,用于描述所有动物共有的特征
public abstract class Animal { // 使用abstract关键字声明这是一个抽象类
protected String name; // 保护级别的String类型成员变量,用于保存动物名称
// 构造方法,用于初始化Animal的实例
public Animal(String name) {
this.name = name; // 通过this关键字访问本类实例的name属性
}
// 抽象方法,由于Animal是抽象的,所以它不需要实现具体的声音发出逻辑
public abstract void makeSound(); // 必须有abstract修饰符,没有方法体,即无{}包围的代码块
}
// Dog类继承自Animal类
public class Dog extends Animal { // 使用extends关键字表明Dog类继承自Animal类
// Dog类的构造方法
public Dog(String name) {
super(name); // 调用super关键字,这里指的是调用父类Animal的构造方法
}
// 重写Animal类中的抽象方法makeSound
@Override // 注解表示此方法是对父类方法的重写
public void makeSound() {
System.out.println("The dog named " + name + " says Woof!"); // 根据Dog的特性发出声音
}
}
2. 关联 (Association)
定义: 类A拥有类B的对象作为自己的属性之一,表示“A有一个B”。
// Student类,表示学生的信息
class Student { // 普通类,非抽象也不继承任何类
private String name; // 私有成员变量,表示学生的姓名
public Student(String name) { // 构造方法
this.name = name; // 初始化student的姓名
}
public String getName() { // getter方法,用于获取学生的姓名
return name;
}
}
// School类,表示学校,可以拥有多个学生
class School { // 普通类,同样既非抽象也不继承任何类
private List<Student> studentsList = new ArrayList<>(); // 创建一个学生列表的私有成员变量
// 方法addStudent,向school的学生列表里添加新的学生
public void addStudent(Student student) {
studentsList.add(student); // 利用List的add方法,添加一个新的学生对象
}
}
3. 聚合 (Aggregation)
定义: 是一种弱形式的关联,表示“A部分包含B,但即使没有B,A也能存在”。
// Department类,表示部门,可以拥有员工
class Department { // 普通类
private List<Employee> employees = new ArrayList<>(); // 可能拥有多名员工
public void addEmployee(Employee e) {
employees.add(e); // 添加员工进部门
}
}
// Employee类,表示员工
class Employee { // 普通类
private String name;
public Employee(String name) {
this.name = name;
}
// 其他相关方法...
}
4. 组合 (Composition)
定义: 强形式的关联,表示“A完全含有B,没有B则A无法存在”。
// Address类,表示地址信息
class Address {
private String street;
private String city;
public Address(String street, String city) {
this.street = street;
this.city = city;
}
}
// Person类,表示人员信息,包含了Address对象
class Person {
private String name;
private Address homeAddress;
// 注意这里homeAddress是在构造Person时就确定下来的,表示紧密关系
public Person(String name, Address homeAddress) {
this.name = name;
this.homeAddress = homeAddress;
}
// 其他相关方法...
}
5. 依赖 (Dependency)
定义: 最弱的形式,仅表示“A在其生命周期某个点上使用B”。
// PaymentProcessor接口,表示支付处理器的功能
interface PaymentProcessor { // 接口,用于规范处理付款的行为
void processPayment(double amount);
}
// ShoppingCart类,表示购物车,依赖于某种支付手段完成购买过程
class ShoppingCart { // 普通类
private List<Item> items = new ArrayList<>(); // 购物车内存放的商品列表
// 计算总价
double calculateTotal() {
double total = 0;
for (Item item : items) {
total += item.getPrice();
}
return total;
}
// 结账,利用传入的paymentProcessor完成支付
void checkout(PaymentProcessor paymentProcessor) {
double totalAmount = calculateTotal();
paymentProcessor.processPayment(totalAmount);
}
}
注:从AI搜索整理所得
原文地址:https://blog.csdn.net/2303_79480422/article/details/142774378
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!