/ JAVAJUNGSUK

Ch9-1~3. Object 클래스

자바의 정석 기초편

0. 목차



Chapter9. java.lang 패키지와 유용한 클래스

Ch9 - 1. Object 클래스

Ch9 - 2. Object 클래스의 메서드 : equals()

Ch9 - 3. equals()의 오버라이딩



Ch9 - 1. Object 클래스


▶ Object 클래스란?

▷ 모든 클래스의 최고 조상
▷ 오직 11개의 메서드만을 가짐
▷ notify(), wait() 등은 쓰레드와 관련된 메서드





Ch9 - 2. Object 클래스의 메서드 : equals()


▶ equals(Object obj)

▷ 객체 자신(this)과 주어진 객체(obj)를 비교
▷ 반환타입 boolean : 같으면 true, 다르면 false
▷ Object 클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)


▶ 주소 비교 → value 비교

▷ Object의 equals()를 오버라이딩하여 주소 비교 → value 비교
  • 주소 비교
      public boolean equals(Object obj) {
          return this == obj;
      }
    
  • value 비교
      public boolean equals(Object obj) {
          return this.value == obj.value; // ERROR!
      }
    

    이렇게 하면 에러 → 형변환 해야 함

      public boolean equals(Object obj) {
          Value v = (Value)obj;
            
          return this.value == v.value;
      }
    

    그런데 참조변수의 형변환 전에는 반드시 instanceof로 확인
    Object는 어떤 타입이든 괜찮으니까 instanceof 생략했었는데 해야함

      public boolean equals(Object obj) {
          if (!(obj instanceof Value)) return false;
            
          Value v = (Value)obj;
            
          return this.value == v.value;
      }
    




Ch9 - 3. equals()의 오버라이딩


▶ equals()의 오버라이딩이란?

▷ 인스턴스 변수(iv)의 값을 비교하도록 equals()를 오버라이딩해야 함
  • cv : 객체마다 같음(공통) → 비교X
  • iv : 객체마다 다름(개별) → 비교O

▶ 예시

▷ 주소 비교


▷ iv 비교