【问题标题】:Java clarification on instance and static variable usage from within instance and static methods?Java 澄清实例和静态方法中的实例和静态变量使用?
【发布时间】:2014-03-10 00:07:10
【问题描述】:

我书中的问题是:在以下定义中对实例变量和静态变量的访问设置了哪些限制: 1.) 实例方法? 2.) 静态方法?

我对这个概念的反应正确吗?

-实例方法不能直接访问实例变量,而静态变量可以直接访问,因为在整个类中使用一个副本。 (每个对象将共享此静态变量以及类中的静态方法。实例变量仅对每个对象可用,并且每个对象都有自己的此实例变量的副本。)静态方法不能访问类的实例成员.然而,静态方法可以访问静态变量的成员。

【问题讨论】:

  • 然而,静态方法可以访问静态变量的成员。 这有点令人遗憾。更清楚的是“静态方法可以访问静态成员”,否则您的解释似乎是正确的。
  • 现在,这种情况下的成员和变量是一样的吧?
  • 是的,您的解释是正确的。我也同意 Jeroen 的说法。
  • members = 实例变量还是静态变量?
  • 成员是属于类体的一切。您可以将其进一步拆分为 实例字段类字段实例方法类方法构造函数等。其中“类”与“静态”相同。

标签: java static-methods instance-variables


【解决方案1】:

实例方法不能直接访问实例变量

错了。

而静态变量可以直接访问,因为在整个类中使用一个副本。

正确。

(每个对象都会共享这个静态变量以及类中的静态方法。

正确。

一个实例变量只对每个对象可用,每个对象都有它自己的这个实例变量的副本。)

正确。

静态方法不能访问类的实例成员。

正确。

静态方法可以访问静态变量的成员。

正确,如果它有成员,并且它们是可访问的。

编译器会以 100% 的可靠性告诉您所有这些。

【讨论】:

    【解决方案2】:

    没错,简单地说:

    实例方法可以访问同一个类的实例和静态变量(如果其他访问修饰符允许的话);

    静态方法只能访问同一个类的静态变量。

    【讨论】:

    • 好吧,仅就实例方法和静态方法而言,我的响应点中描述的限制是否有效? ;)
    • 是的。最后两句话就是这样:)
    • @Artem 如果你说的是对的,那是对的,OP 说的不对,不是的。它们不等价。
    猜你喜欢
    • 2011-01-10
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2021-11-29
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多