我猜你正在看这个并且认为这是一个鸡和蛋类型的问题,但它根本不是。
如果这是您的第一个 OO 语言,您可能对 Java 的术语感到困惑。 Java有一种叫做“静态方法”的东西。你的 main(String[]) 方法是一个静态方法。这些 static 方法实际上只是普通的旧函数。另一方面,面向对象的方法称为“实例方法”或简称为“方法”。人们经常对术语草率。
在 Java 中,函数(即静态方法)必须定义在与类相同的位置,并使用该类的名称来标识它。但是,它仍然只是一个普通的旧功能。有时一个类只有一堆松散相关的函数/静态方法。就像 Math 类有一堆关于数学的函数。有时,像字符串这样的更多 OO 类会在 OO 方法中包含一些静态方法/函数。
在您的程序中,您的主要功能与您的课程无关。但是放在那里作为一个小例子仍然很好。
当 Java 启动时,总是在某处的主函数中启动(你可以告诉它主函数在哪个类中)。
因此,当您的程序运行时,JVM 会选择您的主函数作为有效的主函数。它运行该功能。它只是一个不需要任何对象的函数。调用 main 不会创建任何对象。
现在,当您在 main(String[]) 中时,您碰巧在这里创建了一个对象:
XCopy x = new XCopy();
现在你有了一个 XCopy 类型的新对象,它在主函数的本地范围内由引用(对象指针)x 指向。如果 XCopy 有一个构造函数,它就会被调用。
所以,如果你想在脑海中想象它,让我用一种虚构的语言为你编写它,它具有更清晰的可视化语法!
这里是:
Namespace XCopy
{
function void main(String[])
{
int orig = 42;
XCopy x = new XCopy();
int y = x.go(orig);
System.out.println(orig + " " + " y);
}
}
Class XCopy
{
method int go(int i)
{
....
return whatever;
}
}
在使用其他语言语法的同一程序中,您可以看到您有一个函数、一个类和一个方法,并且您有该类的一个实例。
希望有帮助!!