所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
一、饿汉式
二、懒汉式
//懒汉式
//为了防止饿汉式对象的浪费,则引用懒汉式
//不调用时不创建对象,只有在需要时创建对象
//懒汉式,只有在第一次调用静态方法getInstance02()时,才会创建一个对象。从而保证单例
饿汉式VS懒汉式
1.二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,而懒汉式是在使用时才创建。
2.饿汉式不存在线程安全问题,懒汉式存在线程安全问题。
3.饿汉式存在浪费资源的可能。因为如果在程序中一个对象实例都没有使用,那么饿汉
式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。
final关键字:
final 可以修饰类、属性、方法和局部变量.
在某些情况下,程序员可能有以下需求,就会使用到final:
1)当不希望类被继承时,可以用final修饰.
2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。
3)当不希望类的的某个属性的值被修改,可以用final修饰.
4)当不希望某个局部变量被修改,可以使用final修饰
5)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法。
6) final不能修饰构造方法(即构造器)
7) final 和static往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理。
8)包装类(Integer,Double,Float,Boolean等都是final),String也是final类。
final使用注意事项和细节
final修饰的属性又叫常量,一般用XX XX XX来命名
final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一【选择一个位置赋初值即可】:
①定义时:如public final double TAX_RATE=0.08;
②在构造器中
③在代码块中。
如果final修饰的属性是静态的,则初始化的位置只能是
①定义时
②在静态代码块不能在构造器中赋值。
final类不能继承,但是可以实例化对象。
如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承。
利用 final 取消类加载
5)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法。6) final不能修饰构造方法(即构造器)
7) final 和static往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理。
抽象类
当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类
抽象类使用的注意事项和细节讨论
1)抽象类不能被实例化
2)抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法
3)一旦类包含了abstract方法,则这个类必须声明为abstract
4) abstract 只能修饰类和方法,不能修饰属性和其它的
5)抽象类可以有任意成员【抽象类本质还是类】,比如:非抽象方法、构造器、静态属性等等
6)抽象方法不能有主体,即不能实现.
7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,
除非它自己也声明为abstract类。
8)抽象方法不能使用private、final和static来修饰,因为这些关键字都是和重写相违背的,
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92407 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!