一、类关系
继承 使用extends表示,类和类单继承,接口和接口多继承,多个逗号隔开又叫泛化关系
实现 类和接口是多实现关系,多个逗号隔开,通过关键字 implements表示
依赖 一个类中的局部变量 ,保存了另一个类对象
关联 又叫强依赖,一个类中的成员变量,是另一个类对象
聚合 整体和局部可以分离,各自具备独立的生命周期
比如 A要保存B的引用,这个引用一般是别人给的,或传递的,反正不是自己创建的
比如工厂模式,或者Spring中的IOC DI注入
组合 整体和局部不可分离,局部不具备独立生命周期
比如 A要保存B的引用,这个引用一般是自己创建的
那么A销毁后,B也会随之销毁,成员垃圾数据
二、内部类
2.1 概述
就是类中创建的类
当一个事物的内部,还有一个部分需要一个完整的结构进行描述
而这个内部的完整结构只对当前类提供服务,就可以写为内部类
如果学生类需要保存老师,而老师就是一个完整的结构
一般我们会存储老师的对象就行
但是如果老师类,是公共的,就意味着在任何地方都可以使用老师类
而我们只想让这个老师类给学生类使用,不想给别的类使用,就把老师类弄成内部类
2.2 分类
成员内部类 等同看做成员变量
静态内部类
局部内部类
匿名内部类
2.3 成员内部类
内部类可以访问外部类私有化数据
成员内部类
可以看做是成员变量,没有使用static修饰的内部类
成员内部类中不能有静态声明
成员内部类中可以直接访问外部类的所有数据
2.4 静态内部类
静态内部类 可以等同看做静态变量
静态内部类中,可以直接调用外部类静态属性
不能直接访问外部类的成员属性需要创建外部类对象才能使用
静态内部类中可以有任何声明
2.5 局部内部类
局部内部类可以看做局部变量()
局部内部类,不能使用static修饰
局部内部类中访问外部方法的局部变量时,该变量需要加final修饰,但是1.8中final可以省略
局部内部类不能有静态声明
如果多个方法中的局部内部类,类名不一致,则 为 外部类类名$1内部类类名
如果多个方法中的局部内部类类名一致了,则 为 外部类类名$1内部类类名,外部类类名$2内部
类类名…以此类推
局部内部类可以直接访问外部类的静态属性
如果是静态方法中的局部内部类,则无法直接访问外部类成员属性
如果是成员方法中的局部内部类,则可以直接访问外部类的成员属性
2.6 匿名内部类
三、设计模式
3.1 概述
设计模式:代表了最佳的实践方式,通常被有经验的面向对象的软件开发人员采用
是众多有经验的开发人员,经过很长时间的使用和错误总结出来的,用来解决一系列特定问题
它不是语法规范,而且一套用来提高代码的复用性、可读性、可维护性、鲁棒性及安全性的解决
方案
3.2 单例模式
单例模式: 多次获取对象,但是只创建一个实例化对象,获取到的是同一个对象
1 构造方法私有化,让外部无法创建对象
2 对外提供一个用于获取对象的静态方法
3 提供一个静态变量,保存创建的对象
根据对象的创建时机不同,分成两种
1 懒汉模式:当用到的时候,再创建这个对象
2 饿汉模式:类加载的时候,就创建这个对象
3.2.1 饿汉模式
3.2.2 饿汉模式
根据对象的创建时机不同,分成两种
1 懒汉模式:当用到的时候,再创建这个对象
2 饿汉模式:类加载的时候,就创建这个对象
3.2.1 饿汉模式
[外链图片转存中…(img-8vVimQXP-1722601354445)]