[Java 소스] Object 클래스 equals 메서드 재정의
//equals 메서드를 재정의하지 않은 MyData 클래스
public class MyData {
int num;
public MyData(int num){
this.num = num;
}
}
//equals 메서드를 재정의한 MyInt 클래스
public class MyInt {
int value;
public MyInt(int value){
this.value = value;
}
public boolean equals(Object obj){
if(obj instanceof MyInt){
MyInt mi = (MyInt)obj;
return value == mi.value;
}
return false;
}
}
//equals 메서드 재정의 예
public class Program {
public static void main(String[] args){
MyData md1 = new MyData(1);
MyData md2 = new MyData(1);
System.out.println(md1.equals(md2));
System.out.println(md1==md2);
MyInt mi1 = new MyInt(1);
MyInt mi2 = new MyInt(1);
System.out.println(mi1.equals(mi2));
System.out.println(mi1==mi2);
}
}
//안전한 하향 캐스팅 예
public class Program {
static void foo(Musician musician){
if(musician instanceof Pianist){
Pianist pianist = (Pianist)musician;
pianist.Tunning();
}
musician.Play();
}
public static void main(String[] args){
Musician musician = new Drummer();
foo(musician);
musician = new Pianist();
foo(musician);
}
}
실행 결과
false
false
true
false
본문
[Java] 5.6.1 equals 메서드 (Object 클래스)
학습에 도움이 되시면 ebook을 구입(판매가 3000원, ebook)하여 소장하시면 감사하겠습니다.
'Java > 디딤돌 Java 언어 Part1' 카테고리의 다른 글
[Java 소스] Object 클래스 toString 메서드 재정의 (0) | 2016.12.22 |
---|---|
[Java 소스] Object 클래스 hashCode 메서드 재정의 (0) | 2016.12.22 |
[Java 소스] 안전한 하향 캐스팅 예 (0) | 2016.12.13 |
[Java 소스] 묵시적 하향 캐스팅 오류 예 (0) | 2016.12.13 |
[Java 소스] 인터페이스 다중 상속 예 (0) | 2016.12.13 |