java - 在非静态方法内调用没有类实例的非静态方法

标签 java methods static class-method non-static

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您不知道 xy 是否是实例上方法或字段中的局部变量。)

关于java - 在非静态方法内调用没有类实例的非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366451/

相关文章:

wpf - 单个值的 INotifyPropertyChanged 与 ObservableCollection

java - 使用正则表达式删除java中分隔符之间的文本

c - 警告 : passing argument 1 of 'quicksort' makes pointer from integer without a cast

c# - 如何使用 List< string> 参数调用方法

php - 方法参数的首选做法是什么?

c++ - 循环 C++ 头文件包括

java - 数组 "r"的值更新为 2?

java - Spring Boot Data REST、HATEOAS 无法使用自定义 Controller

java - Java 中的 Int 和 String 数组

java - 无法编译主Java应用程序