class GFG {
public static void main (String[] args) {
GFG g=new GFG();
g.pri();
}
void pri(){
mod();
}
void mod()
{
System.out.println("HHI");
}
}
在下面的代码中,当我在非静态方法中调用 mod() 方法而不为 mod() 方法创建类实例时,它确实可以工作并给出输出“Hi”; 根据定义非静态方法没有Class实例就无法调用;
它是如何工作的?
最佳答案
它有一个实例,即您在 main
中创建的实例,您在执行 g.pri()
时使用了该实例。在像 pri
这样的实例方法中,调用它的实例可用作 this
,并且 this.
是可选的。在实例方法中,这两个语句完全相同执行相同的操作:
mod();
this.mod();
如果您不包含 this.
,Java 编译器会为您添加它。
(作为意见问题,我建议您至少将其包含在字段中,因为否则在代码中x = y + 1
您不知道 x
和 y
是否是实例上方法或字段中的局部变量。)
关于java - 在非静态方法内调用没有类实例的非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366451/