Interface 인터페이스
프로그래밍 관점
- 추상 메서드의 집합 ⭐
- 인터페이스의 핵심은 추상 메서드
- 구현된 것이 전혀 없는 설계도. 껍데기 (모든 멤버가
public
)
static 메서드, 상수, default 메서드는 부수적 요소 (JDK 1.8부터 추가)
- 변수 (iv, cv), 생성자, 인스턴스 메서드 사용 불가 (추상 클래스와 인터페이스의 차이점)
interface PlayingCard{
public static final int SPADE = 4;
int DIAMOND = 3;
public abstract String getCardNumber();
String getCardKind();
}
- 인터페이스의 메서드는 항상
public
abstract
가 붙기 때문에 일부 또는 전부 생략 가능
- 인터페이스의 상수는 항상
public
static
final
이 붙기 때문에 일부 또는 전부 생략 가능
인터페이스의 상속
interface Fightable extends Movable, Attackable {}
interface Movable {
void move (int x, int y);
}
interface Attackable {
void attack(Unit u);
}
- 인터페이스의 조상은 인터페이스만 가능
- Object 클래스가 최고 조상이 아니다.
- 다중 상속 가능, 추상 메서드는 충돌해도 문제 없음
인터페이스의 구현
- 인터페이스에 정의된 추상 메서드를 완성하는 것
interface Fightable {
void move(int x, int y);
}
class Fighter implements Fightable {
public void move(int x, int y) {}
}
- 추상 클래스 완성과 동일 ( = 추상 메서드 구현)
extends
대신 implements
키워드 사용
- 일부만 구현하는 경우, 클래스 앞에
abstract
키워드 사용