추상 메서드
- 선언은 되어있으나 코드가 구현되지 않은 메서드
- 자식 클래스에서 오버라이딩하여 사용한다.
- 일반적인 메서드와 다르게 블록{}이 없다
추상 메서드 선언
public abstract void sayHello();
추상 클래스
하나 이상의 추상 메서드를 포함하는 클래스
- 클래스의
공통적인 부분을 추출해 규격을 잡아놓은 형태
추상 클래스 선언
public abstract class 추상클래스명 {
abstract 리턴타입 메서드이름(매개변수, ...);
}
추상 클래스 구현
public class 클래스명 extends 추상클래스명 {
@Override
public 리턴타입 메서드이름(매개변수, ...) {
}
}
인터페이스
인터페이스 선언
public interface 인터페이스명 {
void 메서드명(매개변수, ...);
}
인터페이스 구현
public class 클래스명 implements 인터페이스명 {
@Override
public 리턴타입 메서드이름(매개변수, ...) {
}
}
인터페이스와 추상클래스 차이
| 구분 | 추상 클래스(abstract) | 인터페이스(Interface) |
|---|
| 키워드 | abstract | interface |
| 상속 키워드 | extends | implements |
| 멤버 변수 | 제한 X | public static final(생략시 컴파일러가 자동으로 추가) |
| 메서드 | 제한 X | public abstract(생략시 컴파일러가 자동으로 추가) |
| 다중상속 | 불가능 | 가능 |
| 구현시 | 상속받은 클래스에서 추상 클래스의 추상 메서드는 반드시 구현 필요 | 인터페이스에 정의된 모든 메서드 오버라이딩하여 구현 필요 |
| 언제 사용하나 | - 부모클래스에서 공통 부분 설계가 완료되면 자식 클래스에서 상속 받아 사용
- 공통적인 변수나 함수를 묶을때
| - 상속 관계가 없는 다른 클래스들이 서로 동일한 행위(method)를 구현해야할때 사용
- 다중상속을 해야할때
|