1.类和对象
类的范围使用static关键字 加载时初始化 并且只加载一次
对象范围实力变量 对类属性的描述和初始化赋值
2.构造方法
构造方法的作用:
创建对象并初始化 顺序不可颠倒
问题是:setter方法和构造方法都是用来对对象赋值或者初始化的 为什么同时存在?
加载的时机不同 构造方法在new的时候就已经存在 初始化对象 而setter方法是为了后期对对象的属性进行后面的修改
3.static关键字
围绕类的级别展开的 访问方式 类名.静态变量名 类名.静态方法名
修饰的变量和方法 都是在类加载时就初始化了
区分加载时机就可以区分实例变量实例方法以及静态变量和静态方法的本质区别了
4.设计模式(单例)
设计模式就是一种可以重复使用的针对某一类问题的解决方案 Gof设计模式
单例模式:(单个实例)保证只创建一次对象
通常情况下 new关键字出现一次就会创建一个新的对象
饿汉模式:在类加载时就创建好了对象
思路:
1.构造方法私有化 保证外部不可以直接创建对象
2.定义一个静态的方法(如果是实例方法 则需要先创建对象 和第一步矛盾) 获取单个对象 此时还不能保证只创建一次对象 因为多次使用类名调用静态方法也可以创建多个对象
3.定义一个静态变量 在类加载的时候初始化构造方法创建对象(并且只初始化一次)
懒汉模式:需要的时候再创建对象
思路:
1.构造方法私有化 保证外部不可以直接创建对象
2.定义一个静态的方法(如果是实例方法 则需要先创建对象 和第一步矛盾) 获取单个对象 此时还不能保证只创建一次对象 因为多次使用类名调用静态方法也可以创建多个对象
3.定义一个静态变量让他初始值为空 在静态方法中做判断 如果为空则创建对象 如果不为空则直接返回