Java中类之间的关系
**横向关系
1.依赖关系
某个对象在执行指定方法时需要其他类的对象参与完成
public class Cup{
int cno;
String color;
double size;
}
public class People{
public coid show(String a){
System.out.println(a);
}
public void drink(Cup cup){
//人想要喝水,需要杯子对象的参与,所以杯子类和人类就是一个依赖关系
}
}
2.关联关系
它体现的就是两个类或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强,不存在依赖关系的那种偶然性,关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,关联可以是单向的也可以是双向的.表现在代码层面的话,为被关联的类B以类属性的形式出现在类A中,也可能是关联类A应用了一个类型为被关联类B的全局变量
//部门类
public class Dept(){
String dno;
String dname;
}
//员工类
public class Emp(){
String eno;
String ename;
Dept edep;//所在部门
}
3.聚合关系
是关联关系的特例,代表了整体与部分,拥有的关系
计算机 和 CPU
公司 和 员工
整体与部分之间是不可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象所共享
4.组合关系
组合也称为强聚合
人 和 大脑
整体与部分之间的关系,但此时整体和部分是不可分离的,整体的生命周期结束也就代表着部分生命周期的结束.
纵向关系
1.继承关系
2.实现关系
java中的继承
1.作用:提高代码的复用性,避免大量代码重复
2.是用extends关键字来继承
3.继承是单一性的,一个子类只能继承一个父类,一个父类可以被多个子类继承
4.父类中包含了所有子类所共有的属性和行为,子类中包含的是每个子类所特有的属性和行为
5.子类继承父类后就包含了子类和父类中所有的属性和行为
6.继承具有传递性
7.java规定在继承后,要想构造子类必须先构造父类
在子类构造器中若没有手动的去调用父类的任何构造器,编译器会默认提供一个super()去访问父类的无参构造器,一旦手动调用了父类的构造器,那么编译器则不再提供默认的super(),而且调用父类的构造器必须写在子类的构造器的第一行.