static关键字
基本概念
- 应用
static
关键字润饰成员变量示意动态的含意, 此时成员变量<u>由对象层级晋升为类层级</u>, 也就是整个类只有一份并被所有对象共享. 该成员变量<u>随着类的加载准备就绪</u>, 与是否创建对象无关 static
关键字润饰的成员能够应用援用.的形式拜访,但举荐类名.
的形式
应用形式
- 在非动态成员办法中, 既能拜访非动态的成员又能拜访动态的成员
(成员: 成员变量 + 成员办法. 动态成员被所有对象共享) - 在动态成员办法中, 只能拜访动态成员不能拜访非动态成员
(成员: 成员变量 + 成员办法. 因为此时可能还没有创建对象) - 在当前的开发中, 只有附属类层级并被所有对象共享的内容才能够应用
static
关键字润饰(不能滥用static关键字)
结构块和动态代码块
- 结构块: 在类体中间接应用{}括起来的代码块
- 每创立一个对象都会执行一次结构块
- 动态代码块: 应用
static
关键字润饰的结构块 - 动态代码块随着类加载时执行一次
案例题目
编程实现Singleton类的封装编程实现SingletonTest类对Singleton类进行测试, 要求main办法中能失去且只能失去该类的一个对象
public class Singleton { // 2.申明本类类型的援用, 指向本类类型对象 // 在类中创立好对象, 而后送到类外 /* 只看等号右边,就相当于是类的成员变量, 且该成员变量附属对象层级 // 若类外想要拜访这个变量, 就须要应用对象 也就是<援用.成员变量>的形式 // 然而当初类外是无奈创建对象的, 所以就须要将该成员变量晋升为类层级的 //Singleton sin = new Singleton(); */ // 为了避免Singleton sin = null 使援用变量有效,所以私有化,类外就不能间接拜访 // 应用private static独特润饰 private static Singleton sin = new Singleton(); // 1.私有化构造方法, 应用private关键字润饰 private Singleton() {} // 3.提供私有的get办法负责将对象返回 // 应用static关键字润饰, 将该办法晋升为类层级 public static Singleton getInstance(){ // 通过该办法能失去且只能失去这个类的一个对象 return sin; } /** * 本人写了构造方法 , 就不会再调用零碎默认的构造方法 * 因为私有化构造方法后, 类外就一个对象都不能创立 * */}
接下来创立SingletonTest
类进行测试
public class SingletonTest{ public static void main(String[] args) { // 申明Singleton类型的援用, 指向Singleton类型的对象 // 类名 援用变量名 = new 类名(); // Singleton st1 = new Singleton(); // Singleton st2 = new Singleton(); // System.out.println(st1 == st2); // false /** * 只有能够调用构造方法, 就惋惜创立一个新对象, 也就不满足题目中的“失去且只能失去一个对象”的要求 * 所以将构造方法私有化后, 在类外就不能应用, 也就是不能应用new办法创建对象 */ // Singleton st1 = Singleton.sin; // Singleton.sin就是类内创立的对象 // Singleton.sin = null; // 使得援用变量有效 Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); System.out.println(s1 == s2); // true /** * 无论.getInstance()调用多少次, 都指向类内同一个创建对象的语句, 所以也就是只一个对象 * 另, 类内创建对象的语句是类层级, 是随类的创立而加载, 所以只有这个类整体只运行一次, 那么也就只创立一个对象 */ }}
单例设计模式
概念
在某些非凡场合中, 一个类<u>对外提供且只提供一个对象</u>时, 这样的类叫做单例类. 而设计单例的流程和思维叫做单例设计模式
实现流程
- 私有化构造方法, 应用
private
关键字润饰 - 申明本类类型的援用指向本类类型的对象, 并应用
private static
关键字独特润饰 - 提供私有的
get
办法负责将对象返回出动,并应用public static
关键字独特润饰