JAVA

[ Java ] - Object 클래스

algml0703 2022. 9. 28. 11:49
반응형

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