从范围来说来说,java中静态的东西是类级别的,也就是说用类名就可访问,也可以用任何对象名访问,无论以哪种形式访问的都是同一个东西。而一般我们所说的成员变量,是指对象级别的,也就是说每一个对象所拥有的成员变量都是独立的不同的变量,是属于对象自己拥有的。相对于来说访问范围,无疑是静态的更大,静态的可以被任何对象所访问且是同一个,而成员变量是每个对象各自拥有的。那么,为什么“静态方法不能调用类成员变量”,因为要想访问成员变量你必须有个“已经实例化好的对象”,除非你在静态方法里创建一个当前类的实例对象,否则你是无法直接调用成员变量的,因为它不知道这个成员变量属于哪个实例对象的。而在成员方法里,所有属于成员的变量、方法已经可以确定是同一个对象的,并且可以用this表示当前对象。
相关文章
- 为什么静态方法里不能访问实例变量?
- 静态方法&实例方法访问成员变量示例和一些内部类的知识
- C#中为什么不能再方法里定义静态变量(Static)
- java 构造器是静态方法,为什么又能访问费非静态成员变量呢
- Java基础问题:为什么Java里的静态方法没办法调用动态方法和变量?
- C#中类的实例是不能 获取到类中的静态方法和静态变量(Static)的,及原因
- 方法里的局部内部类为什么不能访问一般的方法里的局部变量?
- (转)为什么不能从静态的方法里面调用非静态方法,或变量and类加载机制
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
- 为什么我不能访问ruby中的实例变量?