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));
	}
}