类与类之间关系包含关联(聚合、组合)关系、依赖关系、泛化关系和实现关系,以下由通过代码来解释这些关系。
关联关系
当一个类的属性包含另一个类创建的对象变量时,称这两个类为关联关系。如:部门类代码:
//部门类
class department{
//部门属性
private string departName;
private Employee[] employes //部门中含有一个员工类定义对象的集合
//部门的方法
public setName(String name){
departName = name
}
}
//员工类
class Employee{
private string employeeName;
//员工的方法
}
部门类中包含一个由员工类创建的对象集合(单一对象)作为属性变量employes,则部门类和员工类构成关联关系。其中部门是整体,员工是部门的组成部分。
如果定义的属性对象是外部创建的,通过整体构造函数或方法注入的则为聚合关系;如果属性对象是整体的方法内部创建的则为组合关系。
如:汽车与发动机
Public class car
{
private engine eng1;
public car(engine eng){ //构造函数外部engine对象传入
eng1 = eng;
}
//或者使用其他方法将外部engine对象传入
}
发动机对象是外部创建的,通过构造函数注入发动机对象给属性对象的,汽车和发动机是聚合关系。
Public class car
{
private engine eng1;
public car(engine eng){
eng1 = new engine() ;
}
}
汽车的属性对象是在car内部创建的,汽车和发动机则变为组合关系;当汽车类定义的对象释放时,其创建的发动机对象同时销毁。
依赖关系
当一个类的方法中包含创建另外一个类的对象、方法参数包含另一个类的对象、方法返回另一个类的对象时,则两个类之间为依赖关系。如:
public class Driver{
public void move(Car car){
car.move();
}
}
或者
public class Driver{
public void move(){
Car car = new car=();
car.move();
}
}
汽车Car包含在司机(Driver)方法的参数时或是司机方法内部创建的局部变量对象时称为依赖关系。
泛化关系
泛化关系就是继承关系,如:人与学生、教师的关系;
public class Human{
}
public class Student extend Human{
}
实现关系
描述接口与实现类之间的关系。如:定义电视遥控器的接口,创维电视机遥控器就形成实现关系。代码如下:
//计算结算金额接口
public interface Istrategy {
/**
* 计算实际价格方法
* @param consumePrice
* 消费金额
* @return 结算金额
*/
public double realPrice(double consumePrice);
}
//满减结算策略类
public class ReduceStrategy implements Istrategy {
/**
* 计算实际价格方法
* @param consumePrice
* 消费金额
* @return 结算金额
*/
public double realPrice(double consumePrice) {
if (consumePrice >= 1000) {
return consumePrice - 200;
} else {
return consumePrice;
}
}
}
满减结算策略类ReduceStrategy实现了策略Istrategy接口。