JAVA Programming/JAVA 문제
[55] equals 를 재정의 하여 날짜가 같으면 true 반환
꾸준히개발하자
2020. 7. 20. 08:42
package classex2;
class Date {
int month;
int year;
int day;
public Date(int month, int year, int day) {
this.month = month;
this.year = year;
this.day = day;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Date) { //(상위)부모객체가(하위)자식클래스 타입 이면 ?
Date dtd = (Date)obj; // 다운캐스팅
if(this.month == dtd.month && this.day == dtd.day && this.year == dtd.year) {
return true;
} else
return false;
}
return false;
}
@Override
public int hashCode() {
return day;
}
}
public class MyDate {
public static void main(String[] args) {
Date date = new Date(7,20,2020);
System.out.println(date);
Date date2 = new Date(7,20,2020);
System.out.println(date2);
System.out.println(date.equals(date2));
}
}
생각해보고 내가 다시 한번 작성해보기
package classex2;
class Date2 {
private int day;
private int month;
private int year;
public Date2(int day , int month , int year) {
this.day = day;
this.month = month;
this.year = year;
}
public boolean equals(Object obj) {
if(obj instanceof Date2) {
Date2 dtd = (Date2)obj;
if(this.day == dtd.day && this.month == dtd.month && this.year == dtd.year);
return true;
}
return false;
}
public int hashCode() {
return day;
}
}
public class MyDate2 {
public static void main(String[] args) {
Date2 date = new Date2(7,17,2020);
Date2 date2 = new Date2(7,17,2020);
System.out.println(date.equals(date2));
}
}