静态变量和静态方法的总结:
- 一个类的静态方法只能访问静态变量;
- 一个类的静态方法不能够直接调用非静态方法;
- 如访问控制权限允许,静态变量和静态方法也可以通过对象来访问,但是不被推荐;
- 静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super;
- 静态方法不能被非静态方法覆盖;
- 构造方法不允许声明为 static 的;
- 局部变量不能使用static修饰。
静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super,举例:
public class Demo {
public static void main(String[] args) {
Obj obj = new Obj();
obj.func(this);
}
// Nested Class
class Obj {
public void func (Demo demo) {}
}
}
会报错:
Error:(3, 21) java: 无法从静态上下文中引用非静态 变量 this
Error:(4, 18) java: 无法从静态上下文中引用非静态 变量 this
可以对比一下正常运行的代码:
public class Demo {
public static void main(String[] args) {
Demo demo = new Demo();
Obj obj = demo.new Obj();
obj.func(demo);
}
// Nested Class
class Obj {
public void func (Demo demo) {}
}
}