6.3 类成员 6.3.1 理解类成员
6.3 类成员
static
关键字修饰的成员就是类成员,前面已经介绍的类成员
有类变量
、类方法
、类初始化块
三个成员,
static不能修饰构造器
static
关键字不能修饰构造器。 static
修饰的类成员属于整个类,不属于单个实例。
6.3.1 理解类成员
java类中的五种成员
在Java类里只能包含:
- 成员变量、
- 方法、
- 构造器、
- 初始化块、
- 内部类(包括接口、枚举)
这5种成员,
static可以修饰哪些类成员
static
可以修饰成员变量
、方法
、初始化块
、内部类
(包括接口、枚举)这四种成员,以static
修饰的成员就是类成员。类成员属于整个类,而不属于单个对象。
类变量详解
类变量
属于整个类,当系统第一次准备使用该类时
,系统会为该类变量分配内存空间,类变量开始生效,直到该类被卸载,该类的类变量所占有的内存才被系统的垃圾回收机制回收。类变量生存范围几乎等同于该类的生存范围。当类初始化完成后,类变量也被初始化完成。
类变量既可通过类
来访问,也可通过类的对象
来访问。当通过对象来访问类变量时,系统会在底层转换为通过该类来访问类变量。
从程序运行表面来看,可以看到同一类的所有实例的共享同一个类变量。
类方法详解
类方法
也是类成员的一种,类方法也是属于类的,通常直接使用类作为调用者来调用类方法,但也可以使用对象来调用类方法。与类变量类似,即使使用对象来调用类方法,其效果也与采用类来调用类方法完全一样。
对象访问类成员都是通过类来访问
当使用实例来访问类成员时,实际上依然是委托给该类来访问类成员,因此即使某个引用变量
的值为null
它也可以访问它所属类的类成员。
静态初始化块
静态初始化块也是类成员的一种,静态初始化块用于执行类初始化动作,在类的初始化阶段,系统会调用该类的静态初始化块来对类进行初始化。一旦该类初始化结束后,静态初始化块将永远不会获得执行的机会。
类成员不能访问实例成员
对static
关键字而言,有一条非常重要的规则:类成员不能访问实例成员。
为什么类成员不能访问实例成员
因为类成员是属于类的,类成员的作用域比实例成员的作用域更大,完全可能出现类成员已经初始化完成,但实例成员还不曾初始化的情况,如果允许类成员访问实例成员将会引起大量错误。