1.静态类只包括静态成员
2.静态类本质是一个抽象的密封类,不能被实例化,不能被继承
3 不能包含实例构造函数
静态成员属于类所有,为各个类的实例公园,非静态成员属于实例所有
无论创建多少实例,类的静态成员在内存中只占同一块区域。非静态成员,在每次创建一个类的实例时,都会在内存中为非静态成员新分配一块存储
- 静态方法属于类所有,在类实例化之前可使用
- 非静态方法可以访问类中任何成员,静态方法只能访问类中的静态成员(说明:因为静态方法在类实例化之前就可以使用,而类中的非静态成员只有在实例化之后才会分配内存,这样在调用静态函数时如果访问非静态成员找不到内存地址)
静态函数采用 类名.静态函数名的方式调用
静态函数中只能出现静态成员和静态成员函数,而且不能使用this关键字
静态方法只能被重载,不能被重写,因为静态方法不属于类的实例成员
静态方法不能直接调用非静态方法,可以通过创建一个类的实例,然后通过这一特定的对象来调用静态方法
5 静态构造函数
- 静态类可以有静态构造函数,静态构造函数不可以被继承
- 静态构造函数可以用于静态类,也可以用于非静态类
- 静态构造函数无访问修饰符、无参数,只有一个 static 标志。
- 静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。
优缺点:
静态函数效率比非静态函数高
非静态函数在实例化时自行销毁内存,静态函数不自行进行销毁
静态函数和静态成员创建后只使用同一块内存,但是实例化的方式会创建多个内存
使用静态函数需要保证不会产生并发
如果一个类下面的所有成员都需要被共享,就可以使用静态类
变量需要被共享,方法需要被反复调用的时候,就可以把这些成员定义为静态成员
经常调用就用静态的,相反就用非静态的