面向对象高级一.static

205 阅读3分钟

设计对象来处理数据解决问题

一.变量

1.定义:

1.static叫静态,可以修饰成员变量,成员方法

2.修饰为类变量:类内共享,内存只有一份,会被所有共享

3.无修饰为实例变量:每个对象持有

2.用法

1.类变量

栈内存,在main方法里 类名访问,只有一份

2.实例变量 各自对象访问对象

二.方法

  1. 1.类方法(静态方法) 2static修饰的成员方法 访问推荐方式:类名.类方法

2.实例方法(对象的方法) 对象.实例方法 无法用类名访问

类在方法区,对象在栈内存,指向堆内存,再去方法区寻找,

main方法

类方法 类名调main方法实行

三.应用场景

1.类方法

设计工具类好处:
  1. 提高代码复用性
  2. 调用方便,提高开发效率
为什么工具类中的方法要用类方法,而不用实例方法?
  1. 实例方法需要创建对象来调用,此时的对象只是为了调用方法,对象占用内存,会浪费内存
  2. 而类方法可以直接类名调用
  3. 调用方便,也省内存
多学一招:工具类定义要求

工具类没有创建对象的需求,建议把工具类的构造器私有,

四.注意事项

1.类方法可以直接访问类成员,不可以直接访问实例成员 2.实例方法可以直接访问类成员,也可以直接访问实例成员 3.实例方法可以出现this,类方法不可以出现this

五.代码块

1.静态代码块
  1. 格式:static{}
  2. 特点:类加载自动执行,类加载一次,只执行一次
  3. 作用:完成类的初始化,对类变量的初始化赋值
2.实例代码块
  1. 格式:{}
  2. 特点:每次创建对象时,执行实例代码块,并在构造器前执行
  3. 完成对象的初始化,对类变量的初始化赋值
  4. 减少重复代码的编写

六.设计模式

具体问题的最优解法

1.单例设计模式

-确保一个类只有一个对象(结扎)

--写法

  1. 把类的构造器私有
  2. 定义了一个类变量,私有,记住类的一个对象
  3. 定义一个类方法,返回对象

饿汉类的单例的特点 获取类的对象时,已经获取好了

--应用场景

任务管理器只有一个界面 可以避免浪费内存

2.懒汉式单例设计模式

拿对象时,才开始创建对象

--写法

  1. 把类的构造器私有
  2. 定义了一个类变量,存储一个对象
  3. 定义一个类方法,保证第一次调用时才会创建,后续使用都用第一个

单例对象很少用,才会用懒汉式单例