Java 从方法内部对非静态方法进行静态引用
我理解“无法对非静态方法进行静态引用”错误,但我遇到了以下问题:Java 从方法内部对非静态方法进行静态引用,java,static,static-methods,non-static,Java,Static,Static Methods,Non Static,我理解“无法对非静态方法进行静态引用”错误,但我遇到了以下问题: public class MyClass { public static void main(String[] args) { MyClass myClassInstance = new MyClass(); while (true) { myClassInstance.myMethod(); myMethod();//Ca
public class MyClass {
public static void main(String[] args) {
MyClass myClassInstance = new MyClass();
while (true) {
myClassInstance.myMethod();
myMethod();//Cannot make a static reference to the non-static method myMethod()
}
}// END main
void myMethod() {
try {
//Stuff
}
} catch (Exception e) {
myMethod();
}
}// END myMethod
}// END MyCLass
我不能只从main
调用myMethod()
,但我可以从方法本身内部调用它(在这种情况下,如果发生异常,我想再次调用myMethod()
)
这是怎么回事?myClassInstance
是否仍然存在,因为此时我仍然在myMethod()
中?是否最好在类级别使用
静态MyClass myClassInstance=new MyClass()
,然后每次调用myClassInstance.myMethod()
?首先,您应该了解更多关于静态和非静态方法的信息:
静态方法属于该类
非静态方法属于
类的对象。就是一个
只能调用非静态方法
在类的对象上
属于。静态方法可以
然而,这两个词在课堂上都可以称为
以及类的对象。A.
静态方法只能访问静态
成员。非静态方法可以
访问静态和非静态
因为当时
调用静态方法时,类
可能未实例化(如果是
调用类本身)。在
在其他情况下,可以使用非静态方法
仅当类已
已经实例化了。静电计
方法由的所有实例共享
这个班。这些是一些基本的
差异。我也想
指出一个经常被忽视的差异
在这方面。每当一个方法
在C++/Java/C#中调用,隐式
参数(“this”引用)为
与另一个一起传递/没有传递
参数。如果是静态方法
调用时,“this”引用不可用
作为静态方法传递的方法属于
类,因此没有“this”
参考资料
参考:
这是怎么回事?myClassInstance
是否仍然存在,因为
那一点我还在myMethod()
myMethod
是属于myClassInstance
的实例方法。因此,当您在myMethod()
内部调用myMethod()
时,它相当于this.myMethod()
是否最好在类级别使用静态MyClass myClassInstance=new MyClass(),然后每次调用myClassInstance.myMethod()
当我们将一个类的成员声明为静态时,这意味着无论创建了多少个类的对象,静态成员只有一个副本。静态成员由类的所有对象共享。如果没有其他初始化,则在创建第一个对象时,所有静态数据都初始化为零。欲了解更多信息,请访问。当然不能。另一个方法是类MyClass实例的一部分,而不是类本身。您确实应该了解类和对象方法MyMethod是一种实例方法。调用是使用
myMethod()
相当于this.myMethod()
。在myMethod()中,它是一个实例方法,这个
存在:它是当前对象。main()是一个静态方法,在其内部没有此。所以这个电话没有意义。