【发布时间】:2019-05-29 18:19:35
【问题描述】:
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实例就不能调用;
它是如何工作的?
【问题讨论】:
-
new GFG()确实创建了一个实例。那你到底在问什么? -
四个字母 -
this -
必须有一个欺骗目标。
-
为了调用 pri(),你必须有一个实例(在你的 main 中使用“new”关键字创建)。一旦 pri() 被执行,你 就在那个实例中...并且调用 mod() 在你所在的同一个实例中运行它。因此“this”关键字,这意味着找到那个东西在当前运行的实例中。
标签: java methods static class-method non-static