안녕하세요.
이번 시간에는 자바 인터페이스에 대해서 알아보겠습니다.
인터페이스는 일종의 추상클래스라고 볼 수 있은데, 추상클래스보다 추상화의 정도가 좀 더 심해서 일반 메서드 및 멤버변수를 가질 수 가 없습니다. 이전 시간에 추상클래스 시간에서 알아보았지만 추상클래스는 일반 클래스 처럼 생성자와 일반 메서드 및 멤버변수를 가질 수 있다고 하였습니다. 그렇지만 인터페이스는 그렇지 않습니다.
추상클래스는 완성되지 않은 미완성클래스라고 한다면, 인터페이스는 구현된건 아무것도 없는 기본설계도라고 볼 수 있습니다.
인터페이스를 만들기 위해서는 키워드로 class 대신 interface를 사용합니다. 그리고 interface도 클래스와 같은 access identifier로 public 또는 private를 사용할 수 있습니다.
interface 인터페이스 이름 {
public static final 타입 상수이름 = 값;
public abstract 메서드이름(매개변수목록);
}
모든 멤버변수는 public static final 이어야하며, 이를 생략 할 수 있습니다. 그리고 모든 메서드는 public abstract 이어야하며, 이를 생략할 수 있습니다.
인터페이스는 인터페이스에게서만 상속을 받을 수 있고, 다중상속이 가능합니다.
클래스의 상속과 마찬가지로 자손 인터페이스는 조상 인터페이스에 정의된 멤버를 모두 상속 받는다.
인터페이스도 추상클래스처럼 인스턴스화가 될 수 없고, 자식클래스에서 상속을 받아 추상메서드를 구현하는 것으로 완성되는 것처럼 인터페이스도 같은 방식으로 상속되어서 구현되는것으로 완성됩니다.
다만 상속일때는 키워드로 extends를 사용하지만 인터페이스는 implements를 사용합니다.
자바는 다중상속을 지원하지 않지만, 인터페이스를 이용한 다중상속은 지원합니다.
아래 인터페이스의 예제 소스 코드를 보시겠습니다.
19번 ~ 22번째 줄까지 Animal 인터페이스를 정의하였으며, 3번째줄의 Pig 클래스는 Animal 인터페이스를 implements해서 추상메서드인 animalSound와 sleep를 구현하였습니다.
그리고 interfaceTest 클래스의 26번째 줄에서 pig 참조변수로 인스턴스화 하였습니다.
소스를 평이하여서 금방 이해하실 수 있을실 겁니다.
그럼 이번시간에는 자바 인터페이스에 대해서 알아보았습니다.
자바인터페이스는 중요한 개념이므로 책이나 구글링통해서 많은 예제를 접해보셨으면 좋겠습니다.
이 포스트가 도움이 되셨다면 공감버튼을 눌러주시길 부탁드립니다.^^*
자바 collection framework ( ArrayList , Vector) (0) | 2019.04.14 |
---|---|
예외처리 ( exception handling ) 1 (0) | 2019.04.01 |
추상클래스(abstract class) (0) | 2019.03.30 |
참조변수 형변환 (0) | 2019.03.14 |
제어자(Modifier), 접근제어자(access modifier), static, final, abstract, 다형성 (0) | 2019.03.13 |
댓글 영역