static 修饰符,用来修饰类方法和类变量。static的真正作用就是用于区分Field、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。在类中定义的成员,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例。
static修饰符可以修饰属性(为静态属性),方法(为静态方法),和代码块(为静态代码块)。有以下特点:
- static修饰的变量是静态变量,多个对象共享同一个静态变量;
- static修饰的方法是静态方法,静态方法不能重写(不属于某个对象),不能使用this关键字(无法指向合适的对象);
- 可以直接通过“类名 . 属性/方法”的方式访问静态属性和静态方法,不需要创建类的对象;
- 静态成员不能直接访问非静态成员。静态成员属于类,不需要生成对象就存在了,而非静态需要生成对象才产生, 所以静态成员不能直接访问