3

嗨,有人可以向我解释为什么在调用 java 中的 main 函数的非静态方法之前必须创建一个实例吗?这背后的原因是什么?

4

4 回答 4

3

因为,它们是实例成员,要访问它们,您需要实例。

当从同一个类蓝图创建多个对象时,它们每个都有自己不同的实例变量副本。对于 Bicycle 类,实例变量是 cadence、gear 和 speed。每个 Bicycle 对象对这些变量都有自己的值,存储在不同的内存位置。

所以现在你的第二个问题是static

有时,您希望拥有所有对象共有的变量。这是通过静态修饰符完成的。声明中带有 static 修饰符的字段称为静态字段或类变量。它们与类相关联,而不是与任何对象相关联。类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。

了解实例和类成员

于 2013-09-07T07:52:37.807 回答
0

静态方法是类级别的方法,因此不需要实例。

非静态方法是实例方法。因此需要一个实例。

于 2013-09-07T07:52:27.433 回答
0

没有这个,面向对象的编程与传统的过程式编程真的没有什么不同。当您执行一个非静态函数时,您可以访问属于该对象的所有变量。

话虽如此,请仔细查看您正在调用的函数,看看它们是否可以保留static。函数更static便携,并且不太可能引起副作用。

于 2013-09-07T07:56:21.733 回答
0

一个类的所有静态事物总是属于一个类,它们被视为该类的属性。这就是为什么它们可以在该类中以它们的名称调用,而在类外部以类名调用。

一个类的所有非静态事物总是属于一个对象,它们总是被视为一个对象的属性。这就是为什么只能在 (.) 点运算符创建对象后调用它们。

于 2015-07-10T11:24:57.253 回答