static关键字主要针对多个对象有某个属性是公共属性的时候【比如年级】,当发生修改的时候,所有对象的这个属性都要发生统一的变化,这时将这个属性改为static,就可以只用修改一遍,达到减少大量工作量和不必要的存储空间而改动所有对象中的这一属性的目的。在内存里面会单独存在一个全局数据区来保存公共属性。
对于公共属性的改动,只用调用一个对象的这个公共属性进行修改,就可以达到修改这个属性的目的。
不过对于static属性的访问,要注意的是:公共的属性虽然可以通过对象进行访问,但最好通过所有对象的最高代表:类 来进行访问
所以static属性可以通过类名称直接调用
- 进行类设计的时候,首选的一定是非static属性。考虑到公共信息存储再考虑static
- static不受到类实例化对象的控制,不进行实例化的时候也可以通过类名称调用static属性
关键字static的声明
这个关键字主要可以用来定义属性和方法,主要特点是其可以在类没有进行实例化对象的时候直接调用。
对于程序而言有两种方法:static方法、非static方法,这两种方法在调用上就有了限制:
- static方法只允许调用static属性或static方法;【无法从静态上下文中引用非静态方法】
- 非static方法允许调用static属性或static方法;
造成这种现象的原因是:所有static定义的属性和方法都可以在没有实例化对象的前提下使用,而非static属性和方法则相反。
static定义的方法或者属性都不是代码编写之初所需要考虑的内容,只有在回避实例化对象调用并且描述公共属性的情况下才会考虑static定义方法或属性
为了更好的掌握,后面我会写些例子帮助理解。