在java中调用非静态方法之前创建一个实例

Posted

技术标签:

【中文标题】在java中调用非静态方法之前创建一个实例【英文标题】:making an instance before calling non static method in java 【发布时间】:2013-09-11 08:08:41 【问题描述】:

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

【问题讨论】:

class Apple void eat()如果你没有Apple你怎么能eat()呢? 非静态意味着您只能从该类的实例访问方法。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

现在你关于static的第二个问题

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

Understanding Instance and Class Members

【讨论】:

感谢这澄清了一切【参考方案4】:

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

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

【讨论】:

以上是关于在java中调用非静态方法之前创建一个实例的主要内容,如果未能解决你的问题,请参考以下文章

什么是静态方法?

Java静态方法 与 非静态方法(实例方法)的区别

静态方法怎么调用

Java基础

java中静态方法中调用非静态方法

Java动手动脑