除了内部类之外,类一般不能具有静态属性。
如下定义了一个外部类Static_test和一个内部静态类Static_class:
class Static_test{ Static_test(){ s_int = 1; } public static int s_int; public static void s_func(){ System.out.println("s_int = "+s_int); } }
public class Hello{ Hello(){ } public void seta(int num){ a = num; } public void setb(int num){ b = num; } public void showa(){ System.out.println("a = "+a); } public void showb(){ System.out.println("b = "+b); } public static int a; public int b; static class Static_class{ Static_class(){ s_int = 2; } public static int s_int; public static void s_func(){ System.out.println("s_int = "+s_int); } } public static void main(String[] args){ Hello h1 = new Hello(); Hello h2 = new Hello(); System.out.println("h1:"); h1.showa(); h1.seta(4); h1.setb(2); h1.showb(); System.out.println("h2:"); h2.showa(); h2.setb(3); h2.showb(); System.out.println("h:"); System.out.println("a = "+Hello.a); Static_test st = new Static_test(); Static_class sc = new Static_class(); Static_test.s_func(); Static_class.s_func(); } }
输出:
调用外部类及内部类的静态成员时,只能使用 [类名.成员名] 或 [成员名] 的方式调用,无法使用对象来调用静态成员。
静态成员归类所有,所有实例对象调用的静态成员都指向类本身的静态成员,若静态成员被修改,则所有对象调用时得到的都是修改之后的静态成员。