럿고의 개발 노트

[프로그래머스] 자바 중급 > Part1. Object 클래스 본문

Java Note/[프로그래머스] 자바 중급(동영상 강의)

[프로그래머스] 자바 중급 > Part1. Object 클래스

KimSeYun 2019. 12. 6. 11:44

[프로그래머스] 자바 중급

Part1. Object 클래스

1. Object와 오버라이딩

  • Object 클래스는 모든 클래스의 최상위 클래스

  • 아무것도 상속받지 않는다면 자동으로 Object 클래스를 상속 받음

  • Object가 가지고 있는 메소드는 모든 클래스에서 사용이 가능하다는 의미를 뜻함.

public class Student {
    /* object 클래스 : 모든 클래스의 최상의 클래스
     * 아무것도 상속받지 않으면 자동으로 Object를 상속
     * Object가 가지고 있는 메소드는 모든 클래스에서 다 사용 가능
     * 
     * 아래의 3개는 모두 오버라이딩을 해서 사용해야 함
     * equals : 객체가 가진 값을 비교할 때 사용
     * 같은지를 기능을 제공하지만 기준은 오버라이딩으로 해줘야함.
     * toString : 객체가 가지고 있는 값을 문자열로 반환
     * hashCode    : 객체의 해시코드 값 반환
     * 해시코드는 객체별로 다른 값을 가지는 것이 좋음
     * 자료구조에서 많이 사용된느 것이 해시코드
     */

    String name;
    String number;
    int brithYear;

    // 해시코드를 구하는 것은 수학식임
    // 대도록 유일하지 않는 값을 반환
    // 소수 중의 하나인 31값과 특정 수를 몇개 곱하여 만들고 있는 것을 볼 수 있음
    // 해시코드를 만드는 방법은 다양한 방법이 있음
    // 알고리즘을 공부하면 다양한 해시코드 구하는 법을 알수 있음.
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((number == null) ? 0 : number.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Student other = (Student) obj;
        if (number == null) {
            if (other.number != null)
                return false;
        } else if (!number.equals(other.number))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "Student [name=" + name + ", number=" + number + ", brithYear=" + brithYear + "]";
    }

    public static void main(String[] args) {
        Student s1 = new Student();
        s1.name = "홍길동";
        s1.number = "1234";
        s1.brithYear = 1995;

        Student s2 = new Student();
        s2.name = "홍길동";
        s2.number = "1234";
        s1.brithYear = 1995;

        if(s1.equals(s2)) { // s1객체와 s2의 객체가 같은지를 비교하는 것
            System.out.println("s1 == s2");
        }else {
            System.out.println("s2 != s2");
        }

        System.out.println(s1.hashCode());
        System.out.println(s2.hashCode());

        // equals와 hashCode는 object가 제공하는 것을 쓰고 있기 때문에 오버라이딩을 해줘야 함

        System.out.println(s1); // 객체를 출력하면 자동으로 toString을 호출함.
        System.out.println(s1.toString());
    }
}

출처

[프로그래머스] 자바 중급

Comments