在代码中认识Java类的关系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/swjtu2014112194/article/details/85112164

继承

extends,不必多说。

实现

implements,不必多说。

依赖

简单的理解,就是一个类A中的方法使用了另一个类B。
这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。
比如说,我用笔写字,首先需要一个类来代表我自己,然后需要一个类来代表一支笔,最后,“我”要调用“笔”里的方法来写字。

public class Pen{
    public void write(){
        System.out.println("use pen to write");
    }
}

public class Me{
    public void write(Pen pen){//这里,pen作为Me类方法的参数
        pen.write();
    }
}

一般而言,依赖关系在Java中体现在局部变量、方法的形参,或者对静态方法的调用。

关联

关联的关系比依赖更强,关系是长期性的,关联可以是单向的或双向的。

//Pen还是上面的Pen
public class You{
    private Pen pen;//让Pen成为You的类属性
    public You(Pen pen){
        this.pen = pen;
    }
    public void write(){
        pen.write();
    }
}

被关联类B以类属性的形式出现在关联类A中,或者关联类A引用了一个类型为被关联类B的全局变量,这就叫关联关系。
在Java中,关联关系一般使用成员变量来实现。

聚合

聚合是关联关系的一种特例,它体现的是整体与部分、拥有的关系。

public class Clothes{}//衣服

public class Person{
    private Clothes clothes;//没有实例化
    public Person(Clothes clothes){
        this.clothes = clothes;
    }
}

当调用Person(Clothes clothes)的构造方法时,Person和Clothes有相同的生命周期。
但是当调用Person()的构造方式时,Person实例化后Clothes没有实例化。

组合

组合也是关联的一种特例,这种关系比聚合更强,也称为强聚合。

public class Eye{}//眼

public class Person{//人
    private Eye eye = new Eye();//在Person类中对Eye实例化
    public Person(){}
}

Eye和Person同生共死,只要实例化Person,Eye必须实例化。

猜你喜欢

转载自blog.csdn.net/swjtu2014112194/article/details/85112164