자바프로그래밍

추상 클래스

제주도소년 2020. 4. 10. 09:15

[ 추상 클래스 ]

추상(abstract) 메서드는 선언만 있고 구현이 없는 메서드이다. 추상 메서드를 포함한 클래스는 추상 클래스라고 한다.

추상 메서드와 추상 클래스는 키워드 abstract 로 표시, 추상 클래스는 객체를 만들 수 없다. 따라서 서브 클래스를 만드는 용도로만 사용된다.

 

추상 클래스의 특징

- 하위클래스의 구현을 강제할 수 있다.

- 하위클래스 들에 대해서 같은 내용을 정의 (일관성 있는 접근 가능)

 

Q. 추상 클래스를 상속받으면 추상 메소드를 구현해야 하는가?

상속받는 클래스가 일반 클래스면 반드시 YES , 또 다른 추상클래스라면 NO

 


// abstract class
public abstract class Event {
	public String title;
    public Event(String title) {
    	this.title = title;
    }
    //abstract 메서드
    public abstract boolean isRelevant(MyDate date);
}

isRelevant 라는 메서드는 각각의 클래스에서 다른 일을 한다.


public class OneDayEvent extends Event {
	public MyDate date;
    
    public boolean isRelevant(MyDate date) {
		return this.date.compareTo(date) == 0;
	}
}

public class DeadlinedEvent extends Event {
	public MyDate deadline;
    
    public boolean isRelevant(MyDate date) { // begin <= date <= end
		return deadline.compareTo(date) >= 0;
	}
}

public class DurationEvent extends Event {
	public MyDate begin;
	public MyDate end;
    
    public boolean isRelevant(MyDate date) {
		return begin.compareTo(date) <= 0 && end.compareTo(date) >= 0;
	}
}