1.static 静态的,可用来修饰属性,方法,*代码块,*内部类
static 修饰属性(类变量):是属于类本身的,不是属于某一个对象。当声明一个对象时,并不产生static变量和方法的拷贝
注意:子类会不会继承父类的static方法呢?不会的,但是可以访问。子类并没有继承父类的static修饰的变量和方法,所以说即使子类和父类中都有同样的static方法和变量,并不存在任何的重写的关系,是相互独立属于各自类本身的。因此也不存在多态特性的。而对于普通方法的调用是存在“重写”而最终呈现出多态特性的。
1.由类创造的所有对象,都共用这个属性。
2.当其中一个对象对此属性修改,会导致其他对象对此属性的一个调用 。实例变量(非静态的属性,各个对象各拥有一套副本)
3.静态的变量可以直接通过“类.变量”的形式来调用。
4,类变量的加载要优先于对象,所以当有对象以后,可以“对象.类变量”使用,但是 “类.实例变量”是不行的。
5.类变量存在于静态域中
static 修饰方法(类方法):
1.随着类的加载而加载。在内存中也是独一份。
2.可以直接通过“类.类方法”的方式调用。
3.静态方法在实例化之前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存; 内部静态方法可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法不可以调用静态的属性和方法。
静态方法可以直接调用,非静态方法的调用,需要通过new对象来调用。
4.静态成员+静态的方法内是不可以使用 this 或 super 关键字!
this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西
this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在。
this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象; 静态方法和静态类不属于单个对象,而是类的所有对象共享使用。
注:静态的结构(static的属性,方法,代码块,内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构
解析:https://blog.youkuaiyun.com/u010479322/article/details/51730275