给出下一个例子:
//class
public class Person {
private int id;
private String name;
private int age;
//class constructor to instantiate Person class
public Person (int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (id != other.id)
return false;
return true;
}
public static void main(String[] args) {
//case 1
Person p1 = new Person(1, "Carlos", 20);
Person p2 = new Person(1, "Carlos", 20);
//case 2
Person p3 = new Person(2, "John", 15);
Person p4 = new Person(3, "Mary", 17);
}
}
我能否得出以下结论?:
换句话说,实例和对象具有不同的语义含义?今天这两个术语都被视为同义词,但我不确定它们是否真的是一样的(个人而言,我认为它们是不同的东西)。
老实说,我对Alfred blog定义感到更舒服:
对象:真实世界对象共享2个主要特征,状态和行为。人类有状态(姓名,年龄)和行为(跑步,睡觉)。汽车具有状态(当前速度,当前档位)和状态(应用制动,换档)。软件对象在概念上类似于现实世界的对象:它们也包括状态和相关行为。对象将其状态存储在字段中,并通过方法公开其行为。
类:是用于创建对象的“模板”/“蓝图”。基本上,类将由字段,静态字段,方法,静态方法和构造函数组成。 Field用于保存类的状态(例如:Student对象的名称)。方法用于表示类的行为(例如:Student对象如何站立)。构造函数用于创建类的新实例。
实例:实例是表示Object的Class的唯一副本。当创建一个新的类实例时,JVM将为该类实例分配一个内存空间。