static关键字上篇
被static修饰的成员属性就成为了静态属性,也叫类属性;
(1)静态成员随着类的加载而产生,随着类的彻底销毁而消失。所以它的生命周期很长。
(2)静态成员的调用方法有两种,可以用对象.属性名 也可以用类名.属性名 也就是说类名可以直接调用静态属性。
如果我把一只猫的价格定义为静态属性;
private String name;//String 默认值为null
private int month; //int默认值为0
private double weight;//double默认值为0.0,这些是系统给成员属性赋的初值
private String species;
public static double price;
通过get和set方法获取设置和获取两只猫的价格,最后我们会发现两只猫的价格是一样的。
Cat02 ct=new Cat02();
Cat02 ctt=new Cat02();
ct.setName("花花");
ct.setPrice(2000);
ct.setSpecies("英国短毛猫");
ctt.setName("帆帆");
ctt.setPrice(100);
ctt.setSpecies("中华田园猫");;
结果:
为什么两只猫的价格都成为了100呢?这就是static修饰price属性的原因了。静态属性的作用是无论最后该类实例化多少个对象,他们都会共用这一个静态属性。
static关键字中篇
被static关键字修饰的方法称为静态方法。
(1)和静态属性类似,静态方法也有两种调用方式。对象.方法名()和类名.方法名()
(2)静态方法不能直接访问同一个类中的非静态成员,只能调用同一个类中的静态成员。如果你非要在静态方法中调用非静态成员,只可以通过对象实例化之后,利用对象名.方法名()来访问非静态成员。
(3)静态方法不能使用this和super关键字