为什么驱动程序 class ("static void main") 和 class 定义如此不同?

Why things are so different in a driver class ("static void main") and a class definition?

我知道我使用的一些术语令人困惑。澄清一下,驱动程序 class 基本上是建立在 class 定义之上的(从 public class... =]public static void main (String args[]).

这篇post的重点是解决我严重的困惑。 (我是编程初学者)

对我来说,因为驱动程序class是一个方法,它所做的就是实现它自己。但事实却恰恰相反。例如:

to implement a constructor in a driver class, you simply put down the constructor heading, like public Rectangle(), with its name being the same as that of the class. but in a class definition, to creat a object/ implement a constructor, you also have to write down happen inside that constructor, so you use the expression "type name = new type name ()".

PS: 我可能用错了一些术语,请指正谢谢。或者一些概念

我会尽力回答这个问题。

让我们看一下 "driver class method" 中的每个关键字并确定其含义。

  1. public - 此方法 public 只能由其外部的 class 调用
  2. static - 此方法无需 class 的实例即可调用。在Java中,查看数学class。您不需要实例化 Math class 的实例来使用 sqrt 函数 (Math m = New Math(); m.sqrt(25);),您只需使用 Math.sqrt(25).
  3. void - 这个方法returns没什么
  4. main - 方法名

既然我们已经弄清楚了,让我们问问自己为什么这些东西必须在这里 "driver class"

虚拟机(运行您的自定义程序的程序)被硬编码以查找名为 main 的方法,该方法是 public 并且也可以在不创建您的 CLASS 实例的情况下调用.

所以这意味着当你的程序第一次运行时,没有它的实例。

为了解决这个问题,您可以将所有方法和属性创建为静态的(通常被认为是不好的做法),或者您可以在它自己的入口方法中创建自己的 class 实例,然后开始调用属于实例的非静态方法和属性。

我希望这是有道理的。