初识Java—(二十四)Java类成员_java 类
static关键字修饰的成员就是类成员,其中有类变量Field、类方法、静态初始化块。static修饰的类成员属于整个类,不属于单个实例。
6.3.1 理解类成员
在Java类里只能包含Field、方法、构造器、初始化块、内部类(接口、枚举)5种成员,其中static可以修饰Field、方法、初始化块、内部类。用static修饰的成员就是类成员。类成员属于整个类,而不是属于单个对象。
类Field既可以通过类来访问,也可以通过类的对象来访问。但是通过类的对象来访问类Field时,实际上访问的并不是该对象所拥有的Field,而是类所拥有的Field。可以理解为:当通过对象来访问类Field时,系统会在底层转换为通过该类来访问类Field。
举例1:
public class Test {
public static int a = 1;
public void run(){
a++;
System.out.println(a);
}
public static void main(String[] args) {
Test t1 = new Test();
t1.run(); //
Test t2 = new Test();
t2.run(); //
}
}
类方法也是类成员的一种,类方法属于类的,通常直接使用类作为调用者来调用类方法,但是可以使用对象来调用类方法,与类Field类似。
静态初始化块也是类成员的一种,静态初始化块用于执行类的初始化动作,在类的初始化阶段,系统会调用该类的静态初始化块来对类进行初始化。一旦该类初始化结束后,静态初始化块将永远不会获得执行的机会。
对于static关键字而言,有一条非常重要的规则:类成员不能访问实例成员。因为类成员是属于类的,类成员的作用域比实例成员更大,完全可能出现类成员已经初始化完成,但实例成员还不曾初始化的情况。如果允许类成员访问实例成员将会引发大量的错误。
6.3.2 单例类
在Java中,类的构造器默认为public的权限,允许任何类自由的创建该类的对象。但是在某些情况下一些类自由的创建该类的实例对象没有任何意义,比如说:一个系统的窗口管理器、一个数据库引擎访问点,此时如果在系统中为这些类创建多个对象就没有太大的实际意义。
所以在这种情况下,可以设计一个类只能创建一个实例,则这个类被称为单例类。
创建单例类的步骤:
1、 使用private关键字修饰构造器
2、 提供一个public的static的类方法调用构造器
3、 创建一个static的成员变量来保存类对象,同时判断对象是否已经创建
举例1:
package com.langsin.test;
public class Singleton {
private Singleton(){
}
private static Singleton single = null;
public static Singleton getInstance(){
if(single==null){
single = new Singleton();
}
return single;
}
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
}
}