对象只有在new的时候才会分配空间,有时候我们希望不管是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,就可以static修饰成员,也称静态成员或类成员。
static可修饰属性、方法、代码块、内部类。
特点:
- 随着类的加载而加载(属于类),优先于对象存在。
- static修饰的成员被所有对象所共享(也称类成员)。
- 访问权限允许时,可不创建对象,直接被类调用。
静态成员引用格式:
java
类名.[静态成员属性/成员方法]
示例:
java
clasa Demo {
private static String temp = "DEMO";
public static void val() {
System.out.println("Demo.val");
}
}
class Test {
public static void main(String[] args) {
//直接使用类名调用
System.out.println(Demo.temp;);
Demo.val();
}
}
静态属性、方法的设计思想:
- 静态属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为静态属性,相应的方法设置为静态方法。
- 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用静态方法,从而简化了方法的调用。
使用注意:
- 类成员,直接使用
类名.静态成员
,不需要实例化。 - static修饰的方法内只能调用static修饰的成员方法和成员变量,非static修饰的方法可以调用static修饰的成员(因为static修饰的成员优先对象加载)。
- static修饰的方法不能被重写(因为static方法属于类,不属于对象)。
- static方法内部不能有this和super(因为不需要实例就可以方法static方法,this和super都属于对象)。