Object 클래스
Object 클래스는 모든 자바 클래스가 상속하는 최상위 클래스이다.
Object 클래스의 메서드
‣ protected Object clone( )
‣ boolean equeals(Object obj)
‣ Class<?> getClass()
‣ int hashCode()
‣ void notify()
‣ void notifyAll()
‣ String toString()
‣ void wait()
‣ void wait (long timeout)
‣ void wait (long timeout, int nanos)
‣ ex) String toString().
해당 클래스에 대한 설명을 문자열로 반환하는 메서드이다. 클래스 정의시 해당 메서드의 정보를 toString()메서드에 재정의한다.
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Name:" + name +","+ "Age: " + age;
}
}
public class ObjExam {
public static void main (String[] args) {
Person person = new Person("oh",27);
System.out.println(person.toString());
}
}
‣ ex) boolean equeals(Object obj)
인스턴스 객체와 파라미터로 전달되는 객체가 같은지 비교하여 그 결과값을 boolean 타입으로 반환하여 준다.
import java.util.Objects;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return Objects.equals(name, person.name);
}
}
‣ int hashCode()
해시코드는 객체를 식별하는 정수값을 의미하며, hashCode() 메서드는 그러한 정수값을 반환하여 주는 메서드이다.
import java.util.Objects;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
‣ protected Object clone( )
인스턴스 객체를 복제하여 주는 메서드이다. 해당 인스턴스 객체를 복제하여 그 참조값을 반환하여 준다. 클래스의 복제를 하기 위해서는 Cloneable 인터페이스를 재정의해주어야 한다. Cloneable 인터페이스를 구현(implements)하지 않으면, CloneNotSupportedException 에러가 발생한다. 즉 implements Cloneable 을 해줌으로써 해당 클래스가 복제가능하게끔 만들어주는 것이다.
public class User implements Cloneable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
- 단순히 새로운 변수 선언 후 복사한 경우, 각 객체가 값을 변경하는 것이 복사된 객체나 원본 객체에 영향을 준다.
public class ObjExam {
public static void main (String[] args) {
User user = new User();
user.setName("mihee");
System.out.println(user.getName());
// mihee
User copyUser = user;
copyUser.setName("copyUesr");
System.out.println("user name:"+user.getName());
// user name:copyUesr
System.out.println("copyUser name: "+copyUser.getName());
// copyUser name: copyUesr
}
}
- clone 메서드 이용한 경우, 각 객체가 값을 변경하여도 원본 객체나 복제된 객체간 영향을 주지 않는다.
public class ObjExam {
public static void main (String[] args) throws CloneNotSupportedException {
User user = new User();
user.setName("mihee");
User copyUser = (User) user.clone();
copyUser.setName("copyUser");
System.out.println("user name:"+user.getName());
// user name:mihee
System.out.println("copyUser name: "+copyUser.getName());
// copyUser name: copyUser
}
}
출처
https://www.youtube.com/playlist?list=PLOSNUO27qFbtjCw-YHcmtfZAkE79HZSOO
'JAVA' 카테고리의 다른 글
[ Java ] - stream API 활용 (0) | 2022.10.09 |
---|---|
[ Java ] - 유용한 클래스 (0) | 2022.09.28 |
[ Java ] - jsp 기본 문법 / jsp 라이프사이클 (0) | 2022.09.15 |
[ Java ] -JSP 활용 기본 (0) | 2022.09.14 |
[ Java ] - 인터페이스 (0) | 2022.09.06 |