我知道在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. 什么是静态方法和变量?
- 5. python静态变量和方法
- 6. Kotlin静态方法和变量
- 7. PHP变量变量的静态方法
- 8. 对静态变量和静态方法的未定义参考
- 9. 静态变量和静态方法之间的区别
- 10. 静态方法和静态变量的Java
- 11. 方法和变量有非静态需要是静态错误
- 12. Android Studio静态或非静态变量和方法
- 13. 爪哇 - 静态方法和静态变量
- 14. 静态方法和静态变量,糟糕的设计实践?
- 15. 静态方法中的静态变量不会改变
- 16. 静态类中的静态变量和非静态类中的静态变量
- 17. 静态方法变量问题
- 18. 访问静态变量的Const方法
- 19. vbscript静态类变量/方法?
- 20. 静态方法内部变量共享
- 21. 静态方法的Java实例变量
- 22. python方法中的静态变量
- 23. CoffeeScript的继承:静态变量/方法
- 24. 静态函数和非静态变量
- 25. 从静态方法访问非静态成员变量
- 26. 用静态方法更改一个静态变量
- 27. 无静态变量“这种”静态方法
- 28. 静态方法来分配非静态变量
- 29. 访问静态变量从静态方法
- 30. 从C++中的静态方法访问非静态类变量
可能的重复[无法从静态函数?](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