为什么驱动程序 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" 中的每个关键字并确定其含义。
- public - 此方法 public 只能由其外部的 class 调用
- static - 此方法无需 class 的实例即可调用。在Java中,查看数学class。您不需要实例化 Math class 的实例来使用 sqrt 函数 (Math m = New Math(); m.sqrt(25);),您只需使用 Math.sqrt(25).
- void - 这个方法returns没什么
- main - 方法名
既然我们已经弄清楚了,让我们问问自己为什么这些东西必须在这里 "driver class"
虚拟机(运行您的自定义程序的程序)被硬编码以查找名为 main 的方法,该方法是 public 并且也可以在不创建您的 CLASS 实例的情况下调用.
所以这意味着当你的程序第一次运行时,没有它的实例。
为了解决这个问题,您可以将所有方法和属性创建为静态的(通常被认为是不好的做法),或者您可以在它自己的入口方法中创建自己的 class 实例,然后开始调用属于实例的非静态方法和属性。
我希望这是有道理的。
我知道我使用的一些术语令人困惑。澄清一下,驱动程序 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" 中的每个关键字并确定其含义。
- public - 此方法 public 只能由其外部的 class 调用
- static - 此方法无需 class 的实例即可调用。在Java中,查看数学class。您不需要实例化 Math class 的实例来使用 sqrt 函数 (Math m = New Math(); m.sqrt(25);),您只需使用 Math.sqrt(25).
- void - 这个方法returns没什么
- main - 方法名
既然我们已经弄清楚了,让我们问问自己为什么这些东西必须在这里 "driver class"
虚拟机(运行您的自定义程序的程序)被硬编码以查找名为 main 的方法,该方法是 public 并且也可以在不创建您的 CLASS 实例的情况下调用.
所以这意味着当你的程序第一次运行时,没有它的实例。
为了解决这个问题,您可以将所有方法和属性创建为静态的(通常被认为是不好的做法),或者您可以在它自己的入口方法中创建自己的 class 实例,然后开始调用属于实例的非静态方法和属性。
我希望这是有道理的。