我正在阅读java语言编程中的“数据抽象”,我在这个短语中遇到过:
java中的对象具有三个基本属性: 状态 , 身份 和 < EM>行为 即可。对象的状态是来自它的值 数据类型。 对象的标识区分一个对象 另一即可。将对象的身份视为这个地方很有用 其值存储在内存中。
每个人都可以更具体地解释什么是身份?
答案 0 :(得分:7)
假设你有这个简单的类:
class Example {
private int value;
Example(int v) {
this.value = v;
}
public void showValue() {
System.out.println(this.value);
}
}
我们有这个代码(例如,在其他地方的方法中):
Example e1 = new Example(42);
Example e2 = new Example(42);
然后:
e1
和e2
有州(他们的value
成员)。在这种情况下,它们都具有相同的状态(42)。
e1
和e2
有行为:一种方法showValue
,它会将其值转储到控制台。 (请注意,它们不一定必须具有相同的行为:我们可以创建一个Example
的子类,它与showValue
做了不同的事[可能在流行音乐中显示了它-up对话框],并使e2
成为该子类的实例。)
e1
和e2
有身份:表达式e1 == e2
为false
;它们不是同一个对象。他们每个人都有独特的身份。它们可能是等效的对象(我们可以实现equals
和hashCode
以使它们被认为是等价的),但它们永远不会具有相同的身份。
没有对象具有与另一个对象相同的身份;在运行进程的内存中保证对象的标识是唯一的。
(它们还有其他特征,例如它们的类类型,但那些是主要的三种。)
答案 1 :(得分:0)
我可以从C ++的两个例子中思考。
示例1:对象a和b不相同,因为它们不共享相同的内存。
Someclass a;
Someclass b;
示例2:对象a和b相同,因为它们指向同一对象。
Someclass c;
Someclass* a = &c;
Someclass* b = &c;