类的关系

【重点掌握】:设计模式定义、类关系、抽象封装具体、面向超类型编程

【重点掌握】:策略模式的参与角色、职责分配、协作及代码实现。

超类型就是抽象类或接口

1、接口

类的关系_第1张图片

2、关联:类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联

理解:关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。

类的关系_第2张图片

关联分为组合和聚合

Public class A {

    Private B b;//从这行代码显示A关联B,但不能决定是组合还是聚合关系,

}

2.1组合:整体与部分间的关系,不可分的,比如人和人的大脑,比聚合关系强的关系。

public class Head

{

    private Mouth mouth;

    public Head()

    {

        mouth = new Mouth();//类Head对象创建时Mouth对象也创建了

    }

}

public class Mouth

{

}

2.2聚合:整体与部分之间是可分离的,比如计算机与CPU、公司与员工的关系等,与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。

类的关系_第3张图片

Public class A {

    Private B b; //注意这有定义类B在类A中的私有变量

    Public set(B b){

        This.b=b;}

}

//从这行代码显示A类对象创建时,B类对象没有创建,类比组装主板A和其上的网卡B,两者可以分拆,换一个新的网卡。

Main(){

    A a = new A();

    a.set(new B());

}

3.依赖:以类A依赖类B为例,表示类B出现在类A的一个方法中的参数中、方法体局部变量、或静态B方法调用、返回值。

理解:依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性Car和House的实例是以参量的方式传入到buy()方法中去的。一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。

类的关系_第4张图片

public class Driver {

    public void drive(Car car) {

        car.move();

    }

}

public class Car {

    public void move() {

       }

}

4. 泛化关系(Generalization)也就是继承关系

1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;

2、子类中除了与父类一致的信息以外,还包括额外的信息;

3、可以使用父类的实例的地方,也可以使用子类的实例;

你可能感兴趣的:(类的关系)