这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战
UML类图简介
在 Java 或其它面向对象设计模式中,类与类之间主要有 6 种关系,他们分别为:依赖,关联,聚合,组合,继承,实现。他们的耦合度依次增强。
依赖
如果一个对象的活动中要依赖另一个对象,则两者之间是依赖关系。
class Driver {
//通过形参方式发生依赖关系
public void drive1(Car car) {
car.run();
}
//通过局部变量发生依赖关系
public void drive2() {
Car car = new Car();
car.run();
}
//通过静态变量发生依赖关系
public void drive3() {
Car.run();
}
}
public class Car {
public static void run(){
System.out.println("汽车在跑");
}
}
关联
如果一个对象需要知道另一个对象,则对象之间是一种关联的关系。关联可以是单向的,即一个对象知道另一个对象,而另一个对象不知道该对象,也可以是双向的,即两个对象相互知道。
class Driver {
private Car car = new Car();
public void drive() {
car.run();
}
}
class Car {
public void run(){
System.out.println("汽车在跑");
}
}
聚合
表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在,整体和局部生命周期不一样。
class Driver {
private Car car = null;
public void drive() {
car.run();
}
public void setCar(Car c){
car = c;
}
}
class Car {
public void run(){
System.out.println("汽车在跑");
}
}
组合
和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了,整体和局部生命周期一样。
class Driver {
private Car car = null;
public Driver(Car car) {
this.car = car;
}
public void drive() {
car.run();
}
}
class Car {
public void run(){
System.out.println("汽车在跑");
}
}
继承
在面向对象的编程思想中,继承是指子类继承了父类的所有功能,并且能够在父类的基础上扩展自己的功能,在 Java 中使用 extends 关键字。
class Animal {
public void eat(){}
public void sleep(){}
}
class People extends Animal {
public void study(){}
}
实现
实现的概念和继承有些类似。但是接口中不会有已经写好的操作或者方法,接口中声明的操作都需要再实现类中实现,在 Java 中使用 implement 关键字。
interface IPeople {
public void eat();
public void study();
}
class People implements IPeople {
public void eat(){
}
public void study(){
}
}