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