Java语言中static修饰的成员为什么不能访问没有static修饰的成员?
static 可以修饰哪些成员呢?
为什么这些成员在用static修饰以后,就不能访问没有static 修饰的成员呢?
static 可以修饰哪些成员呢?
为什么这些成员在用static修饰以后,就不能访问没有static 修饰的成员呢?
2016-01-07
static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数。
java规定,静态方法不能直接访问非静态方法或者字段。如果要访问,须通过new 对象进行访问
访问静态:
public class Hello{ static int a = 1; public static void main(String[] args) { //main方法为static System.out.println(Hello.a); //类名.变量 访问 System.out.println(a); // 直接访问 Hello hello = new Hello(); System.out.println(hello.a); // 对象.变量 访问 } }
访问非静态:
public class Hello{ int a = 1; public static void main(String[] args) { //main方法为static //错误信息:Cannot make a static reference to the non-static field Hello.a System.out.println(Hello.a); //类名.变量 访问 //错误信息:Cannot make a static reference to the non-static field a System.out.println(a); // 直接访问 //不报错 Hello hello = new Hello(); System.out.println(hello.a); // 对象.变量 访问 } }
举报