为了账号安全,请及时绑定邮箱和手机立即绑定

Java语言中static修饰的成员为什么不能访问没有static修饰的成员?

static 可以修饰哪些成员呢?

为什么这些成员在用static修饰以后,就不能访问没有static 修饰的成员呢?

正在回答

3 回答

老师那个例子非常好理解

0 回复 有任何疑惑可以回复我~

这就是个语法规则,我是这样记忆的,静态不能访问非静态,非静态既可以访问静态也可以访问非静态,希望对你有用

1 回复 有任何疑惑可以回复我~

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); // 对象.变量 访问
	}
}


3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Java语言中static修饰的成员为什么不能访问没有static修饰的成员?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信