[자바 라이브 스터디] 8주차 - 인터페이스
•
목표) 자바의 인터페이스에 대해 학습하세요.
1. 인터페이스 정의하는 방법
•
정의) 다른 클래스 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스
interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
public abstract 메서드이름(매개변수목록);
}
Java
복사
•
특징) 추상클래스와 차이점
◦
추상클래스
▪
추상 메서드 외에도 일반 메서드와 멤버 변수를 가질 수 있음
◦
인터페이스
▪
일반 메서드와 멤버 변수를 가질 수 없음
•
예외) JDK1.8부터 static 메서드와 default 메서드는 허용됨
▪
모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있음
▪
모든 멤버 변수는 public static final 이어야 하며, 이를 생략할 수 있음
final int a = 1; // public static final int a = 1;
static int b = 2; // public static final int b = 2;
int c = 3; // public static final int c = 3;
public int d = 4; // public static final int d = 4;
private int e = 5; // error
Java
복사
2. 인터페이스 구현하는 방법
•
구현 클래스
◦
정의)
class 클래스이름 implements 인터페이스이름 {
// 인터페이스에 정의된 추상메서드를 구현(override)
}
Java
복사
◦
특징)
▪
인터페이스 메서드 중 일부만 구현한다면, abstract 붙여서 추상클래스로 선언해야 함
▪
상속(extends)와 구현(implements) 동시에 할 수 있음
•
익명 구현 객체
◦
정의)
인터페이스이름 변수명 = new 인터페이스이름() {
// 인터페이스에 정의된 추상메서드를 구현(override)
}
Java
복사
◦
특징)
▪
재사용하지 않고 일회성으로 사용할 때 효율적
3. 인터페이스 상속
•
정의) 인터페이스는 인터페이스로부터만 상속 받을 수 있음
•
특징)
◦
클래스와 달리 다중상속 가능
▪
static 상수만 정의할 수 있어서 조상의 멤버 변수와 충돌할 일 거의 없음
◦
클래스와 마찬가지로 자손은 조상의 모든 멤버 상속받음
4. 인터페이스의 기본 메소드 (Default Method), 자바 8
•
정의) 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법
interface 인터페이스이름 {
default 반환타입 메서드이름() {}
}
Java
복사
5. 인터페이스의 static 메소드, 자바 8
•
정의) 인스턴스와 관계 없는 독립적인 메서드라 인터페이스에 추가하지 못할 이유가 없어서 JDK 1.8부터 추가됨
•
특징)
◦
override가 안됨
◦
인터페이스 타입 직접 참조해 호출해야 함