一、修饰类
static修饰类时,只能修饰静态内部类,如果在外部类上声明为static,程序编译不通过。 静态内部类特点: 1、可以有外部类能够拥有的所有属性:静态变量、静态方法、静态代码块、成员变量、成员方法、构造方法; 2、可以使用外部类的静态成员变量和静态方法(不管是否私有);但是无法访问成员变量和成员方法; 3、public静态内部类可以被外部使用,只是需要通过“外部类.静态内部类”的方式使用(在同一个包内使用时,静态内部类无需声明为public也可以使用)。 4、静态类内部也可以定义静态内部类,详见ThreadLocal类中ThreadLocalMap中的Entry类。
二、修饰变量和方法
作用:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。 static方法一般称作静态方法,没有this,无法访问类的非静态成员和非静态方法。 static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。static成员变量的初始化顺序按照定义的顺序进行初始化。
三、修饰静态代码块
在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
四、内部类
第一,内部类可以访问其所在类的属性(包括所在类的私有属性),内部类创建自身对象需要先创建其所在类的对象; 第二,可以定义内部接口,且可以定义另外一个内部类实现这个内部接口 第三,可以在方法体内定义一个内部类,方法体内的内部类可以完成一个基于虚方法形式的回调操作 第四,内部类不能定义static元素 第五,内部类可以多嵌套
|