Java语言中类与类之间的关系
- 关联关系
- 依赖关系
- 继承关系
- 实现关系(本质也是继承关系)
关联关系
- 对象和对象之间的连接。在Java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在。
- 即“有”的关系:”has-a”。
如果两个互相关联的类中有整体和部分的关系,关联关系分为: 聚合和组合,主要区别在于生命周期不同。
-
- 聚合:创建Student对象时Classes对象可以不创建,当Student 对象销毁时Classes不销毁
public class Student{
private Classes cla;//班级
}
public class Classes{
}
-
- 组合:创建Student对象的时Classes类同样创建,Student对象销毁时,Classes对象也销毁
public class Student{
private Classes cla=new
Classes();//班级
}
class Classes{
}
- 关联关系分为单向关联和双向关联
-
- 单向关联: A类关联B类。
-
- 双向关联:A类关联B类,B类关联A类;
依赖关系(use-a)
- 指一个类A使用到了另一个类B
- 依赖关系的特性:这种关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。
依赖具体表现:在代码层面,依赖关系表现为类B作为参数被类A在某个method
方法中使用
public class Person {
public void travel(Bus bus){
}
}
- 关联是“HAS”关系,依赖是“USE”关系
-
- A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。A类依赖B类,指的是B的对象作为A类的方法参数存在,称为“use”关系。
生命周期不同
-
- 如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。而如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。
继承
继承基本概念
现实生活中的继承
-
- 类似于遗传的意思,比如说你从你母亲那里遗传了一头美丽的金发,也就是说你和你母亲一样都有一头美丽的金发。
-
- 但是也存在不同的地方,比如说你的眼睛比你母亲大。
Java中的继承
-
- 员工为父类,这个类包含所有员工所共有的特性,比如说姓名、地址、基本工资等。
-
- 员工下面有能细分为具体的某类员工,比如说工人、经理、董事等。工人、经理、董事具有员工所共有的特性,也具有各自的特性。比如说董事有交通补助的特性,而员工不具有这个特性。
-
- 董事下面还能继续细分为执行董事、非执行董事等,所以子类也能继续拥有子类。
- 董事下面还能继续细分为执行董事、非执行董事等,所以子类也能继续拥有子类。
/**
* 员工
*
* @author 鑫
*/
public class Staff {
/**
* 姓名
*/
private String name;
/**
* 地址
*/
private String address;
/**
* 基本工资
*/
private double wages;
//获取员工姓名
public String getName() {
return name;
}
//给员工姓名赋值
public void setName(String name) {
this.name = name;
}
//获取员工地址
public String getAddress() {
return address;
}
//给员工地址赋值
public void setAddress(String address) {
this.address = address;
}
//获取员工基本工资
public double getWages() {
return wages;
}
//给员工基本工资赋值
public void setWages(double wages) {
this.wages = wages;
}
}
/**
* 董事
*
* @author 鑫
*
*/
//Director类为上面例子Staff类的子类
public class Director extends Staff {
/**
* 交通补助
*/
private double transportationAssistance;
B类继承A类,那么B类将拥有A类的所有属性和方法,此时我们说A类是B类的父类,B类是A类的子类
C类继承B类,那么C类将拥有B类中的所有属性和方法,包括B类从A类中继承过来的属性和方法,此时我们说B类是C类的父类,C类是B类的子类
基类的私有属性能被继承,不能在子类中访问。
继承是单继承:也就是说一个类只能一个父类,不能继承多个父类。