版权声明:本文为博主原创文章,未经博主允许不得转载。 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必须实例化。