嗨,有人可以向我解释为什么在调用 java 中的 main 函数的非静态方法之前必须创建一个实例吗?这背后的原因是什么?
4 回答
因为,它们是实例成员,要访问它们,您需要实例。
当从同一个类蓝图创建多个对象时,它们每个都有自己不同的实例变量副本。对于 Bicycle 类,实例变量是 cadence、gear 和 speed。每个 Bicycle 对象对这些变量都有自己的值,存储在不同的内存位置。
所以现在你的第二个问题是static
有时,您希望拥有所有对象共有的变量。这是通过静态修饰符完成的。声明中带有 static 修饰符的字段称为静态字段或类变量。它们与类相关联,而不是与任何对象相关联。类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。
静态方法是类级别的方法,因此不需要实例。
非静态方法是实例方法。因此需要一个实例。
没有这个,面向对象的编程与传统的过程式编程真的没有什么不同。当您执行一个非静态函数时,您可以访问属于该对象的所有变量。
话虽如此,请仔细查看您正在调用的函数,看看它们是否可以保留static
。函数更static
便携,并且不太可能引起副作用。
一个类的所有静态事物总是属于一个类,它们被视为该类的属性。这就是为什么它们可以在该类中以它们的名称调用,而在类外部以类名调用。
一个类的所有非静态事物总是属于一个对象,它们总是被视为一个对象的属性。这就是为什么只能在 (.) 点运算符创建对象后调用它们。