什么定义对象的状态?

时间:2020-01-17 05:33:12

标签: java multithreading object concurrency

根据《 Java并发实践》一书:

非正式地,对象的状态是其数据,存储在状态变量(例如实例或静态字段)中。

据我从Java概念或一般的理解,状态/实例变量定义对象状态。据我所知,静态字段属于类变量。静态字段在什么情况下定义对象的状态?

2 个答案:

答案 0 :(得分:2)

对我来说,这听起来有点模棱两可-人们可能会争辩说,静态变量本质上是对象状态,对于给定类型的所有对象都是相同的。

个人而言,但是我不认为静态变量构成对象状态Oracle Java tutorial中的这句话似乎支持我的理解。

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

例如,假设您要创建多个Bicycle对象 并分配每个序列号,第一个以1开头 目的。该ID号对于每个对象都是唯一的,因此是一个 实例变量。同时,您需要一个字段来跟踪 已创建多少个Bicycle对象,以便您知道要使用的ID 分配给下一个。 此类字段与任何个人都不相关 对象,而是整个类

话虽如此,静态变量可以跟踪整个应用程序状态的状态,这是基于同一本书的另一个问题所说的:Object's state in public static fields

答案 1 :(得分:0)

来自Wiki

在面向对象的编程中,还有静态的概念 成员变量,它是静态定义的“类变量” 类,即给定类的成员变量,该变量在 所有实例(对象),并且可以作为的成员变量进行访问 这些对象

由于类中的静态变量在类的所有实例(对象)之间共享,因此它在该对象的状态中直接或间接地发挥作用。

相关问题