static关键字
static关键字可以用来修饰方法、变量、常量,和类属于同一级别。
静态变量、常量:
- 可以通过类名.量名调用,也可以通过对象.量名调用,但是不提倡后者,因为如此容易混淆静态和非静态属性。
- 对象共享一个静态成员
静态方法:
- 静态方法不能直接调用非静态的成员,不能用this
- 静态方法可以被重载,但不能被重写。
- 重载不是多态的体现(条件:要有继承关系,要有方法的重写,要有父类的引用指向子类对象)
1 静态方法内部不能调用非静态变量,不能用this(Cannot make a static reference to the non-static field i)
静态是类级别的。当new一个对象时,静态方法先加载到方法区,然后才在堆内存中为对象开辟空间。
静态方法先于非静态变量存在,静态方法存在的时刻非静态变量尚未存在,所以静态方法内部不能调用非静态成员成员变量。
同理,this指代当前对象,也不能被在静态方法中使用。
2 静态方法可以被重载,但不能被重写。
静态方法可以被重载,重载发生在同一个类里面,允许有相同的方法名和不同的形参列表、返回值类型。
静态方法不能被重写,重写发生在父类与子类的方法之间,而静态方法属于类级别,所以不能被重写。
就算子类中有一个与父类静态方法相同方法名、形参列表、返回值类型的方法,实例对象调用的也是父类静态方法。