学习内容:
- 单例设计模式
- final 关键字
- 抽象类
- 接口
学习时间:
提示:这里可以添加计划学习的时间
例如:
- 周一至周五晚上 7 点—晚上9点
- 周六上午 9 点-上午 11 点
- 周日下午 3 点-下午 6 点
学习产出:
10.4.2 什么是单例模式
单例(单个的实例)
1.所谓类的单例设计模式,就是采取一 定的方法保证在整个的软件系统中,对某
个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法
2. 单例模式有两种方式: 1)饿汉式2)懒汉式
10.4.3 单例模式应用实例
演示饿汉式和懒汉式单例模式的实现。
步骤如下:
1)构造器私有化=》防止直接new
2)类的内部创建对象
3)向外暴露一个静态的公共方法。getnstance
10.4.4 饿汉式 VS 懒汉式
1.二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,
而懒汉式是在使用时才创建。
2.
饿汉式不存在线程安全问题,懒汉式存在线程安全问题。(后面学习线程后,会完善|
一把)
3. 饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉
式创建的对象就浪费了,懶汉式是使用时才创建,就不存在这个问题。
4. 在我们javaSE标准类中,java.lang.Runtime就是经典的单例模式。
10.5 final 关键字
10.5.1 基本介绍
| Final01.java
final中文意思:最后的,最终的
final 可以修饰类、属性、方法和局部变量
在某些情况下,程序员可能有以下需求,就会使用到final:
1)当不希望类被继承时,可以用final修饰. [索例演示]
2)当不希望父类的某个方法被子类覆盖/重写(override)时可以用final关键字
修饰。[ 案例演示访问修饰符final返回类型方法名]
3)当不希望类的的某个属性的值被修改可以用final修饰. [案例演示public
final double TAX RATE=0.08]
4)当不希望某个局部变量被修改,可以使用final修饰[案例演示: final double
TAX RATE=0.08 ]
10.5.2 final 使用注意事项和细节讨论
1) final修饰的属性又叫常量,一般用XX XX XX来命名
2) final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如
下位置之一[选择一个位置赋初值即可] :
①定义时:如public final double TAX RATE=0.08;
②在构造器中
③在代码块中。
3)如果final修饰的属性是静态的,则初始化的位置只能是
①定义时②在静态代码块不能在构造器中赋值。
4) final类不能继承, 但是可以实例化对象。[A2类]
5)如果类不是final类,但是含有final方法, 则该方法虽然不能重写,但是可
以被继承。[A3类]
10.6 抽象类
10.6.3 抽象类的介绍
1)用abstract关键字来修饰一个类时,这个类就叫抽象类
访问修饰符abstract类名{
2)用abstract关键字来修饰一个方法时,这个方法就是抽象方法
访问修饰符abstract返回类型方法名(参数列表)://没有方法体
3)抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现
抽象类(
4)抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多
10.6.4 抽象类使用的注意事项和细节讨论
1)抽象类不能被实例化[举例]
2)抽象类不一 定要包含abstract方法。 也就是说,抽象类可以没有abstract方法[举例]
3) 一旦类包含了abstract方法,则这个类必须声明为abstract [说明]
4) abstract只能修饰类和方法,不能修饰属性和其它的。[说明]
5)抽象类可以有任意成员[抽象类本质还是类] ,比如:非抽象方法、
构造器、静态属性等等[举例]
6)抽象方法不能有主体,即不能实现.如图所示
7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,
除非它自己也声明为abstract类。[举例 A类,B类,C类]
10.8 接口
10.8.3 基本介绍
接口就是给出一些没有实现的方法,封装到一 起,到某个类要使用的时候,在根据具体情况把这些
方法写出来。语法:
interface接口名{
//属性
//抽象方法
class类名implements接口{
自己属性:
自己方法;
必须实现的接口的抽象方法
小结:接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有
方法体[jdk7.0]。接口体现了程序设计的多态和高内聚低偶合的设计思想。
特别说明: Jdk8.0后接口类可以有静态方法,默认方法,也就是说接口中可以有方法的具体
实现
10.8.5 注意事项和细节
10.8.7 实现接口 vs 继承类
10.8.8 接口的多态特性