📚 이것이 자바다 [개정판]
- 인터페이스는 두 객체를 연결하는 역할을 한다
implements
- 해당 클래스가 인터페이스를 통해 사용할 수 있다는 뜻
- 인터페이스의 추상 메소드를 정의한 메소드가 있다는 뜻
- 변수의 타입으로 사용할 수 있고, 기본값 null으로 설정된다
- 사용하려면 new 생성자를 이용하여 변수에 구현 객체를 대입
public class B interface 인터페이스명 {
// public 상수 필드
// public 추상 메소드, 디폴트 메소드, 정적 메소드
// private 메소드, 정적 메소드
}
public static final 타입 상수명 = 값;
(상수 필드)public abstract 리턴타입 메소드명(매개변수);
(추상 메소드)
- 메소드 선언부만 작성
default 리턴타입 메소드명(매개변수);{}
(디폴트 메소드)
- 완전한 실행 코드를 가진 디폴트 메서드 선언 가능
- 상수 필드를 읽거나 추상 메소드를 호출하는 코드 작성
- 예시
default void setMete(boolean mute) { if(mute) { System.out.println("무음처리"); setVolume(MAX_VOLUME); // 추상메소드 호출 } else { System.out.println("무음해제"); } }
public|private static 리턴타입 메소드명(매개변수){}
(정적 메소드)
- 구현 객체가 없이 인터페이스만으로 호출할 수 있다
- 중괄호 안에는 상수 필드만 작성할 수 있다
private
(private 메소드, private 정적 메소드)
- private 메소드 : 디폴트 메소드 안에서만 호출 가능
- private 정적 메소드 : 디폴트, 정적 메소드 안에서 호출 가능
구현클래스명 implements 인터페이스A, 인터페이스B{}
- 구현 객체는 여러 개의 인터페이스를 implements 할 수 있다
interface 자식인터페이스 extends 부모인터페이스1, 2, ..{}
- 인터페이스도 다른 인터페이스를 상속할 수 있다
- 클래스와 달리 다중 상속을 허용한다
- 자식 인터페이스의 구현 클래스는 부모 인터페이스의 모든 추상 메소드를 재정의 해야 한다
- 자동 타입 변환
인터페이스 변수 = 구현객체;
- 부모 클래스가 인터페이스를 구현하고 있다면 자식 클래스도 인터페이스 타입으로 자동 타입 변환 될 수 있다
- 강제 타입 변환
구현클래스 변수 = (구현클래스) 인터페이스변수;
- 메소드 재정의 + 자동 타입 변환 → 다형성