Day11-面向对象高级一static
进阶一static
1、static修饰成员变量
- 称为静态,可以修饰成员变量、成员方法。
两种成员变量
- 类变量:有static修饰,属于类,在计算机里只有一份(跟类一起加载,其中数据在堆区,引用在方法区),会被类的全部对象共享
- 实例变量:无static修饰,属于每个对象。
1 | public class student{ |
- 访问:类变量用类名访问,实例变量实例化后通过对象访问。
1 | public static void main(){ |
类变量应用场景
- 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义为类变量
- 例子:要求用户类可以记住自己创建了多少个用户对象。
1 | public class User{ |
2、static修饰成员方法
两种成员方法
- 类方法:有static修饰的成员方法,属于类,可以直接用类名访问。
- 实例方法:无static修饰的成员方法,属于对象,只能用对象访问。
类方法常见应用场景
- 类方法最常见的应用场景是做工具类。
- 工具类中都是一些类方法,每个方法用于完成一个功能,工具类是给开发人员共同使用的。
- 工具类的好处:提高了代码复用;调用方便,提高开发效率。(例如某项目多次用到随机生成验证码功能,就可以封装一个类方法)
为什么工具类用类方法不用实例方法
- 实例方法,要创建对象才能调用,而此时对象只为了调用方法,浪费内存。
- 类方法,可以直接用类名调用,既方便又节约内存。
工具类定义的要求
- 工具类没有创建对象需求,建议将工具类构造器私有化。
3、static注意事项
- 类方法中可以直接访问类成员(静态),不可直接访问实例成员(非静态)。
- 实例方法中既可以直接访问类成员,也可以直接访问实例成员。
- 实例方法中可以出现this关键字,类方法中不可以出现this关键字。
4、static的应用
代码块
代码块概述
- 代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)
代码块分为两种:
静态代码块:
格式:static{}
特点:类加载时自动执行,由于类只会加在一起,所以静态代码块也只会执行一次。
作用:完成类的初始化,例如:初始化类变量。
实例化代码块:
格式:{}
特点:每次创建对象时,执行实例代码块,并在构造器前执行。
作用:和构造器一样,用于初始化对象,例如:初始化实例变量。
设计模式
- 设计模式概述
- 一个问题有n种解法,设计模式就是具体问题的最优解决方案。
- 设计模式有23种,对应多种软件开发中会遇到的问题。
- 设计模式学习要点
- 解决什么问题?
- 怎么写?
饿汉式单例设计模式
- 确保一个类只有一个对象。
- 获取类的对象时,对象早就创建好了。
- 写法
- 把类的构造器私有。
- 定义一个类变量用于存储对象。
- 定义一个类方法,返回对象。

懒汉式单例设计模式
- 确保一个类只有一个对象。
- 拿对象时,才开始创建对象。
- 写法
- 把类的构造器私有。
- 定义一个类变量用于存储对象。
- 定义一个类方法,保证返回的是同一个对象。(使用if语句判断)

单例模式的引用场景和好处
场景:
- Runtime运行环境
- 任务管理器对象
- 获取运行时对象
在这些任务场景下使用单例模式,可以避免浪费内存。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 宫本贩剑的博客!