我知道在java中静态方法只能使用静态变量和静态方法,而非静态方法可以使用非静态变量和方法。有什么解释为什么静态方法只能访问静态变量/方法?并不能访问非静态方法和变量?静态方法和变量
静态方法和变量
回答
要访问非静态方法/字段,您需要一个类的实例。
...按定义。 – 2011-12-25 06:50:15
但是OP想知道*为什么*。这是一些武断的规则,还是有原因?我们应该解释“是的,有一个非常重要的原因”。恕我直言... – paulsm4 2011-12-25 07:28:41
如果我们理解“静态”实际上意味着什么(而不是仅仅学习规则),那么理由应该是显而易见的。 – 2011-12-25 07:38:25
当你实例化一个类时,它将被加载到堆或栈中。在这种情况下,您的应用程序会引用内存实例所在的那些部分。但是,静态方法只是加载到内存中的函数。这就是为什么如果你的静态方法想要访问一个类变量或方法,它不能仅仅调用它,因为可能存在多个对该堆中的那个类的引用,与之相反,只有一个静态方法可以存在。
如果你想从静态方法调用任何非静态方法,你应该使用实例(或创建一个)到该类,以便你可以定义你真正意义的类引用。
在静态上下文中,“this”关键字不可访问。我们不能在静态上下文中使用这个关键字。实例变量在构造函数调用时被初始化。但是静态变量在类加载时被初始化。在类的加载过程中,如果我们在静态上下文中使用实例变量,实例变量在这段时间内仍未被识别,它会导致编译时错误,因为它们当时未被识别
- 1. 静态变量和方法
- 2. 有关静态方法和变量
- 3. 静态成员变量和方法
- 4. Kotlin静态方法和变量
- 5. 静态变量和静态方法之间的区别
- 6. Android Studio静态或非静态变量和方法
- 7. 访问静态变量的Const方法
- 8. 静态方法内部变量共享
- 9. CoffeeScript的继承:静态变量/方法
- 10. 用静态变量静态方法重入
- 11. 参考静态变量的静态方法
- 12. java中静态方法中的静态变量
- 13. 用静态方法更改一个静态变量
- 14. 从静态方法访问非静态成员变量
- 15. 无静态变量“这种”静态方法
- 16. 从C++中的静态方法访问非静态类变量
- 17. 静态变量和函数的用法
- 18. 变量不会增加,从静态方法调用非静态方法
- 19. 同一类中的Java静态变量和非静态变量
- 20. 静态全局变量和静态局部变量
- 21. 静态方法的继承和静态变量继承有何不同?
- 22. 继承和静态变量
- 23. INotifyPropertyChanged和静态变量
- 24. 静态变量和函数
- 25. Global.asax.cs和静态变量
- 26. 静态变量和IIS 7.5
- 27. 静态和外部变量
- 28. 静态变量
- 29. 静态变量
- 30. 静态变量
可能的重复[无法从静态函数?](http://stackoverflow.com/questions/8029845/cannot-be-referenced-from-a-static-function) – 2011-12-25 06:48:09
它不是重复的,我的问题的内容是完全不同的。 – KyelJmD 2011-12-25 06:56:33
该问题的答案同样适用于这个问题。 – 2011-12-25 06:58:46