재훈재훈
추상클래스와 인터페이스 본문
자료 출처 - 부경대 권오흠 교수님, <JAVA로 배우는 자료구조> 강의
추상 클래스
- 추상(abstract) 메서드는 선언만 있고 구현이 없는 메서드
- 추상 메서드를 포함한 클래스는 추상 클래스 -> 구체화된 메서드도 가질 수 있음
- 추상 메서드와 추상 클래스는 키워드 abstract로 표시
- 추상 클래스는 객체를 만들 수 없음. 따라서 서브 클래스를 만드는 용도로만 사용됨.
예시)
public abstract class Event { // 추상 클래스
public String title;
public Event(String title) {
this.title;
}
public abstract boolean isRelevant(MyDate date); // 추상 메서드
}
인터페이스
- 추상 메서드만을 가진 순수한 추상 클래스 -> 일종의 극단적인 추상 클래스
Q. 그러면 추상 메서드로만 구성된 추상 클래스는 인터페이스와 완전히 동일한가?
A. No!
추상클래스와 인터페이스의 중요한 차이 - 인터페이스는 다중 상속을 허용함!
Java에서는 다중 상속을 허용하지 않는다.
하지만 하나의 클래스가 여러 개의 인터페이스를 구현하는 것은 가능
- static final 데이터 멤버(상수)를 가질 수 있음 -> 인터페이스 안 멤버는 상수만을 가질 수 있다.
예시)
public interface Payable { // 인터페이스
public double calcSalary(); // cacSalary(), salaried()는 추상메서드(인터페이스 안에서 추상메서드는 abstract 생략 가능)
public boolean salaried(); // Payable 인터페이스를 구현하는 클래스는 이 두 메서드를 반드시 구현해야 함
public static final double DEDUCTIONS = 25.5;
}
public class Professor implements Payable { // Payable 인터페이스를 구현한 Professor 클래스
…
public boolean calcSalary() { …. } // 인터페이스 안의 추상 메서드를 구현함
public boolean salaried() { …. }
…
}
'Computer Engineering > JAVA' 카테고리의 다른 글
제네릭(Generic) (0) | 2018.04.07 |
---|---|
파라미터의 다형성 (0) | 2018.04.07 |
다형성과 동적 바인딩 (0) | 2018.04.07 |
상속과 생성자 (0) | 2018.04.07 |
참조변수(클래스 및 배열)의 선언 및 생성 시 주의할 점 (0) | 2018.04.07 |