Interface(인터페이스)
: 자바는 클래스를 사용하는 객체 지향 프로그래밍 언어입니다.
클래스는 생성자, 변수, 메소드로 구성되어 있고 다중정의와 재정의,
추상클래스, 추상메소드, 종단클래스등 다양한 문법을 갖고있지만
단일 상속만을 고려하여 만들어졌기 때문에 확장성에 문제가 있습니다.
이러한 문제를 보완한 것이 인터페이스입니다.
인터페이스도 클래스와 마찬가지로 자바의 중요한 구성 요소입니다.
인터페이스는 상수와 몸통이 없는 메소드로 구성됩니다.
즉 추상메소드와 상수 만으로 구성된 것이 인터페이스입니다,
자바는 많은 인터페이스를 제공합니다. 윈도우 프로그램, JDC, 네트워크
Thread등에서 많이 사용됩니다.
> 인터페이스와 추상 클래스 차이
추상 클래스는 단일 상속만 가능하지만 인터페이스는 다중상속이 가능합니다.
추상 클래스는 한 개 이상 추상 메소드를 갖지만 인터페이스는
모든 메소드가 추상 메소드입니다.
추상 클래스는 abstract키워드를 사용하지만 인터페이스는 interface 키워드를
사용합니다.
추상 클래스를 상속 받을 때 extends 키워드를 사용하지만 인터페이스는
implements 키워드를 사용합니다.
인터페이스에 있는 모든 메소드가 추상메소드 이기 때문에 앞에
abstract 키워드를 따로 붙이지 않습니다.
> 인터페이스의 사용법
: public interface 인터페이스 이름[extends 인터페이스2...]
{
...; // 상수선언
...; // 이름만 있는 메소드 선언
}
자바에서 추상 클래스와 유사한 인터페이스를 만든이유
1. 단일 상속의 한계를 보완합니다.
: 클래스는 단일 상속만 가능하기 때문에 클래스의 확장성, 재사용성에
한계가 있습니다. 하지만 인터페이스는 다중 상속이 가능하기
때문에 단일 상속의 문제를 어느정도 보완할 수 있습니다.
2. 클래스 명세표를 만듭니다.
: 인터페이스는 내용이 없는 메소드로 구성되기 때문에
인터페이스를 상속받은 클래스는 반드시 메소드를 재정의해
사용합니다.
: 인터페이스의 상속
인터페이스 사이의 상속
public interface 인터페이스이름 extends 인터페이스이름..
{
...; // 상수
...; // 메소드
}
클래스에서의 구현
public class 클래스 이름 implement 인터페이스 이름
{
...; // 멤버
...; // 구현 메소드
}