在非静态方法中调用没有 class 实例的非静态方法
Calling non static method without class instance inside a non static method
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() 方法创建 class 实例时,它确实有效并给出了输出"Hi";
根据非静态方法的定义,没有 Class 实例不能被调用;
它是如何工作的?
它有一个实例,即您在 main
中创建的实例,您在执行 g.pri()
时使用了该实例。在像 pri
这样的实例方法中,调用它的实例可以作为 this
使用,而 this.
是可选的。在实例方法中,这两个语句完全做同样的事情:
mod();
this.mod();
如果您不包含 this.
,Java 编译器会为您添加它。
(关于 意见 ,我建议你至少在字段中包含它,因为否则在代码中 x = y + 1
你不知道 x
和 y
是方法中的局部变量还是实例中的字段。)
class GFG {
public static void main (String[] args) {
GFG g=new GFG();
g.pri();
}
}
有效,因为您调用了 GFC 实例的 non-static pri() 方法。
class GFG {
public static void main (String[] args) {
pri();
}
}
会失败,因为你从 static main()
调用了 non-static pri()
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() 方法创建 class 实例时,它确实有效并给出了输出"Hi"; 根据非静态方法的定义,没有 Class 实例不能被调用;
它是如何工作的?
它有一个实例,即您在 main
中创建的实例,您在执行 g.pri()
时使用了该实例。在像 pri
这样的实例方法中,调用它的实例可以作为 this
使用,而 this.
是可选的。在实例方法中,这两个语句完全做同样的事情:
mod();
this.mod();
如果您不包含 this.
,Java 编译器会为您添加它。
(关于 意见 ,我建议你至少在字段中包含它,因为否则在代码中 x = y + 1
你不知道 x
和 y
是方法中的局部变量还是实例中的字段。)
class GFG {
public static void main (String[] args) {
GFG g=new GFG();
g.pri();
}
}
有效,因为您调用了 GFC 实例的 non-static pri() 方法。
class GFG {
public static void main (String[] args) {
pri();
}
}
会失败,因为你从 static main()
调用了 non-static pri()