class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// toString() ์ฌ์ ์
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
// equals() ์ฌ์ ์
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
// hashCode() ์ฌ์ ์
@Override
public int hashCode() {
return name.hashCode() + age;
}
// clone() ์ฌ์ ์ (์์ธ ์ฒ๋ฆฌ ํ์)
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) {
try {
Person p1 = new Person("Aloha", 25);
Person p2 = new Person("Aloha", 25);
Person p3 = (Person) p1.clone(); // ๋ณต์
System.out.println("p1: " + p1);
System.out.println("p2: " + p2);
System.out.println("p1 == p2: " + (p1 == p2)); // false (๋ค๋ฅธ ๊ฐ์ฒด)
System.out.println("p1.equals(p2): " + p1.equals(p2)); // true (๋์ผํ ๊ฐ ๋น๊ต)
System.out.println("p1.hashCode(): " + p1.hashCode());
System.out.println("p2.hashCode(): " + p2.hashCode());
System.out.println("p3 (clone): " + p3);
System.out.println("p1 == p3: " + (p1 == p3)); // false (๋ค๋ฅธ ๊ฐ์ฒด)
System.out.println("p1.equals(p3): " + p1.equals(p3)); // true (๋์ผํ ๊ฐ ๋น๊ต)
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
Java
๋ณต์ฌ