任何人都可以请解释为什么静态方法调用非静态方法是非法的吗?从静态方法调用非静态方法
1
A
回答
13
一种非静态方法是一种对特定的实例(对象)起作用并可访问该对象的成员的方法实例。静态方法不与特定实例关联。
是合法的调用非静态方法,如果你提供了一个实例:
class Foo
{
public static void f()
{
instanceMethod(); // Not OK - no instance provided.
this.instanceMethod(); // Not OK - no "this" in static methods.
new Foo().instanceMethod(); // OK because you provide an instance
}
public void instanceMethod() {}
}
4
因为打电话给你不需要类,在这里给你打电话需要非静态方法的对象静态方法,
的静态方法与非哪里静态方法与状态(对象)相关类相关
1
非静态的方法是,在一个实例的上下文中执行的方法。没有实例,调用它是没有意义的,所以编译器会阻止你这样做 - 也就是说它是非法的。
如果一个方法不访问任何实例字段(又名实例变量),那么它可能应该改为静态方法。
0
非静态方法有隐含参数this
其静态方法都没有(因为没有this
) 孤独,因为这实际上是不可能的调用非静态方法形成静态的。
0
静态方法属于该类。非静态方法属于一个实例。
非静态方法需要在其上执行的实例(this
)。静态方法不需要任何实例,因为类本身就是它所属的实例。
如果我有100个对象实例,则每个nonStatic()方法调用都会影响不同对象的状态。因此,每个非静态方法都是“不同的”,因为它对不同的实体起作用。 同时,即使我有一个对象的实例,调用staticMethod()也不会影响任何这些实例,因为它只能影响类的静态成员。
每个静态方法或静态成员变量有1个类和1个实例。
对于非静态成员,我们有与该类实例关联的每一种方法。
所以,如果你能够调用非静态方法,从静态方法,100个实例中的哪一个会受到影响?你看:它没有意义。
0
静态方法与类连接。 常规方法连接到对象。
在静态方法中,没有可以运行非静态方法的对象。
0
从静态方法调用非静态方法并非非法。无论何时调用静态方法,都不需要类的实例,而在非静态的情况下,则可以。
相关问题
- 1. 非静态调用静态方法
- 2. 从Python中的静态方法调用非静态方法
- 3. 如何从静态方法调用非静态方法android
- 4. 从静态方法调用非静态方法
- 5. 如何从静态方法调用非静态方法
- 6. 从静态Web方法调用ASP.NET页面非静态方法
- 7. 如何从静态方法调用非静态方法?
- 8. 从静态方法调用非静态方法Objective C
- 9. 如何从一个静态方法调用非静态方法
- 10. 如何从静态方法调用非静态方法?
- 11. 从非静态类动态调用非静态方法的最简单方法?
- 12. 非静态方法无法从Android Studio中的非静态方法调用
- 13. 在静态web方法里面调用非静态方法
- 14. java中的静态方法可以调用非静态方法
- 15. 从外部调用非静态方法
- 16. 从ShutdownHook调用非静态方法
- 17. 有没有办法从静态方法调用非静态方法?
- 18. 调用非静态方法动态
- 19. 调用从静态方法
- 20. 从非静态的上下文调用静态方法
- 21. 从静态调用非静态方法的实例
- 22. 调用非静态数组从静态方法
- 23. 如何从静态方法输入非静态方法
- 24. android jni从静态方法到非静态方法
- 25. 呼叫从静态方法C#非静态方法
- 26. 从另一个静态方法中调用静态方法
- 27. 从静态基类方法调用静态派生类方法
- 28. 从另一个静态方法中调用matlab静态方法
- 29. Java错误:静态方法无法引用非静态方法
- 30. 非法静态接口方法调用
这不是非法的。从非静态方法中,可以隐式地调用另一个实例为“this”的实例。对于静态方法,你必须显式提供一个实例,因为它没有'this'实例。 –