Interface ?
- User Interface
- 어원은 Inter(중간) + face(맞대고 있는) 이다.
어느 중간 사이에서 맞대고 있는 부분을 의미한다.
User Interface란 사용자와 컴퓨터 사이에서 일어나는 상호작용을 매개하는 것을 말한다.
객체 지향 언어에서도 인터페이스란 객체와 객체 사이에서 일어나는 사이에서 상호 작용의 매개로 쓰인다.
- Java에서는 Interface라는 키워드를 통해서 Interface를 생성할 수 있다.
Interface로 할 수 있는 일이 무엇이냐 하면 클래스의 기본 틀을 제공하면서 다른 객체 사이에서의 중간 매개 역할도 담당한다.
- 직접 인터페이스를 선언해서 사용해 보자.
public interface Book{
private String author;
private String title;
public void publish(){
//출판
}}
public class Cartoon implements Book{
//author와 tittle에 접근 할 수 있음
public void publish(){
// 꼭 구현해야함
}
}
public class Novel implements Book{
//author와 tittle에 접근 할 수 있음public void publish(){
// 꼭 구현해야함
}
}
이제 부터 진짜 중요한 부분이다. 이 부분을 이해해야 객체 지향의 진정한 의미를 알게 되는 것이다.
Cartoon c = new Cartoon();
Novel n = new Novel();
보통 일반적으로 저렇게 많이 선언해서 사용한다.
하지만 이렇게 한 번 해보자.
Book c = new Cartoon();
c.publish();//만화책 출판
Book n = new Novel();
n.publish();//소설책 출판
클래스 형식이 인터페이스 형식인것이다.
Type이 인터페이스가 될 수 있다. 이렇게 됐을 때 인터페이스의 메소드를 호출하게 되면 실제는 생성된 클래스의 구상 메소드가 호출된다.
인터페이스라는 것을 통해서 클래스의 기본 틀을 얻을수 있으며 구상 클래스들에 접근할수 있다는 것을 보았다.
이렇게 하면 좋은 점이 무엇이냐 하면 구상 클래스에 의존하지 않은 인터페이스에 의존하는 프로그램을 작성할 수 있다는 것이다. 인터페이스에 의존한다는 것은 쉽게 말해서 고정된 틀에 얽매이지 않아도 되는 것이다. 물론 인터페이스의 틀에는 얽매이겠지만 적어도 공통된 틀이기 때문에 어느 클래스에도 접근할 수 있다는 것이다.