对象状态,没有任何属性

时间:2014-05-15 04:24:24

标签: java oop object instance

我们都知道Object的状态是它的属性(实例变量)的值,但是如果类没有任何属性(没有继承的属性),那么Object的状态是什么这样的课。

5 个答案:

答案 0 :(得分:4)

此类对象有一个词 - 无状态

答案 1 :(得分:3)

没有父类没有Java类这样的东西。将使用默认父代,例如java.lang.Object

至少每个类的实例都有两个属性:引用地址和Class类型。注意,并非每个类都可以实例化。 ClassLoader中还使用了一些空格,任何字符串可能(或可能不)被实习。对于JDK和运行时平台的特定版本,此实际实现可能略有不同,JIT可以添加其他优化。但是,作为Java开发人员,您不负责此内存管理,我会对premature optimization保持警惕。

答案 2 :(得分:0)

第一件事

如果开发人员没有写Object,我们在java中编写的任何类都会默认扩展extends类。

所以每个班级肯定都会有一个家长毫无疑问至少Object班。

第二

如果你没有在你的类中放置任何属性,显然它将获得除private之外的所有实例变量都会继承到你的类。

因此它将具有至少object状态,但它不会用于任何目的

答案 3 :(得分:0)

没有数据成员和指向其他对象的链接的对象是无状态对象,并且此形式的几乎没有任何用处

由于它的方法,这种类可以是有用的。它可以......

  • 进一步继承的基础。它声明/定义了一些可以由派生类继承的方法。这个类可能是一个抽象类,根本没有任何对象(虽然不是条件)
  • 服务类。它可以定义一些方法,这些方法本质上不属于具体对象,但被其他对象使用。像一些通用数学运算一样,返回当前时间或类似的服务。这些方法可以是静态的,因此不需要任何实例。

答案 4 :(得分:0)

我们将这些对象称为无状态。顾名思义,他们没有州。

参考其他答案/评论,即使每个Java对象隐式扩展Object,请注意Object has no fields。因此,即使每个对象都有运行时地址和类属性,但出于所有实际目的,您仍然可以将某些对象视为无状态。

接下来,无状态对象毫无用处肯定是为真!您可以使用无状态对象:

1)对具有类似功能的功能进行分组,类似于java.lang.Math,它对数学函数进行分组。 2)将功能作为参数传递,例如Comparator<T>可用于对未实现Comparable<T>的对象进行排序,并且它绝对不需要状态。

无状态对象在某种程度上类似于不可变对象:它们的状态永远不会被改变,因此它们始终是线程安全的。

您可能还希望看到区分会话状态和实例状态的JEE Stateless Session Beans