Day14
- 内部类
1.1 概述
当一个事物(人体)的内部,还有一个部分(心脏)需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务(我心脏只为我提供服务),那么整个内部的完整结构最好使 用内部类
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者 称为外部类。
Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完 整的名称
1.2 分类
- 变量 :
-
成员变量 : 成员内部类
-
静态变量 : 静态内部类
-
局部变量 : 局部内部类
-
形参和实参变量 : 匿名内部类
1.3 成员内部类 :
-
1 可以等同看做成员变量
-
2 成员内部类中不能有静态声明
-
3 成员内部类中可以直接访问外部类所有的属性
(通过外部类对象创建成员内部类对象)
1.4 静态内部类
-
1 可以看做静态变量
-
2 静态内部类中可以声明所有东西
-
3 静态内部类中,不能直接访问成员数据,需要有对象才行
New 外部类对象 进行访问
访问当前类的静态属性属性的时候,类名可以省略(外部类)
外部类.内部类.静态
1.5 局部内部类
局部内部类等同于局部变量
注意 : 局部内部类 在访问外部方法中的局部变量的时候需要加final修饰(1.8之前),从1.8开始 final可以省略,但值依然不能更改(被final修饰)
-
局部内部类中,不能有静态声明
-
如果是 成员方法中 的局部内部类,可以访问外部类中所有的属性
-
如果是 静态方法中 局部内部类, 不可以直接访问外部类的成员属性
1.6 匿名内部类
匿名内部类 : 指在方法调用时,实参需要传入某个接口对象的时候,不传入对象,传入一个匿名的实现类 -
如果方法定义形成 一般是个接口,那么调用的时候,就需要传入其实现类的对象
-
但是可以不实现这个接口,不传递实现类对象,传递一个匿名内部类,这个类,没有名字,不能复用
-
默认的匿名内部类类名 : 外部类类名$1 一次类推
-
那么既然是没有名字的类,那么我们自然无法创建对象,但是传入匿名内部类的 时候回自动创建一个对象
- 设计模式
2.1 概述
前人为解决某些特定问题,而设计出的一些很完美的思路。不是完全特定的语法结构,主要体现思路。 开发中,用到了一些设计模式的话,(就等于使用了他人总结的经验成果,)可以避免很多问题
2.2 单例模式
目的 : 让某个 类 只 创建 一个 对象
1 构造方法私有化(创建对象的权限归自己)
2 创建一个公共的静态的方法用来返回当前类的对象,并且保证只实例化一次(提供对象)
3 创建一个私有化的静态变量,用于存储当前类的对象(变量的类型,是当前类类型)
根据对象不同的创建时机,分为两种情况
-
1 懒汉模式 : 第一次获取对象的时候,再创建对象 (获取对象时才创建)
-
2 饿汉模式 : 加载类的时候,就创建对象 ((构造方法)加载完直接创建)
2.3 工厂模式
- 工厂模式 : 把创建对象的语句单独封装成一个工厂模式
这样 所有用到这个对象的地方,都去工厂中获取,把类之间强依赖关系变弱,灵活度更高
内聚:模块内的功能联系。好的内聚模块应当恰巧做一件事。
耦合性:模块与模块之间关联程度的度量。
高内聚,低耦合