은근한

자바(java) 인터페이스 본문

카테고리 없음

자바(java) 인터페이스

EsJoo 2014. 5. 13. 18:08

인터페이스의 이해


인터페이스라는 것은 엄밀히 말하면 구현 기술이 아니라 설계 기술이다.


복잡한 시스템을 단순하게 표현하고, 명확히 설계하는데 유용한 기술이기 때문에 개발자들에게는 멀리 느껴지게 된다.


설계자로 거듭나고 싶어하는 개발자에게는 꼭 필요한 개념이다.


인터페이스를 이해하기 전에 추상 클래스를 알아야한다.



추상클래스


클래스를 만들 때 어떤 함수는 완성하고, 다른 기능은 상속해서 구현해야하게끔 비워 놓은 것이 바로 추상클래스이다.


약간 미완성느낌이 나게 하는 클래스로 이해하면 좀더 이해하기 쉬울수도 있다.


이런 방식으로 만들면 특정회사가 필요한 모든 것을 만들 필요가 없게 된다.


단점은 추상클래스를 사용하면 사용자의 전체 흐름을 이해하기가 어렵게 된다.


위의 추상 클래스가 이해가 됬다면 인터페이스를 보자



인터페이스


추상클래스를 미완성 클래스라고 했는데 한김에 완전히 구현을 제외하고는 필요한 기능 내역만 작성하자라는 의미로


다른 말로는 스펙만을 기술한다고 말하는데, 설계하는 사람이 원하는 기능의 명칭과 


입출력 값의 종류와 타입만을 기술 한 것을 인터페이스라고 한다.




인터페이스 활용 방안


구현 코드가 필요 없기 때문에 운영체제나 하드웨어에 상관 없이 표준을 만들 수 있다.


예를 들어서, 자바 표준 위원회 같은 곳에서 인터페이스를 정의하면 기업이나 공개소프트웨어 개발 단체에서


실제 구현할 제품을 만들면 되는 것이다.


이렇게 되면 개발자들은 똑같은 방식으로 개발 할 수 있으면서 다양한 성능과 특색을 가진 제품들이 나온다.





인터페이스를 정의 해두면 내부의 개발자가 아니라 외부의 누군가가 부족한 부분을 추가 하거나, 기능을 추가하는 것이 쉽다.


서로 다른 성질을 가진 기능들을 조합하고자 할 경우에도 인터페이스가 사용된다.


가장 대표적인 예가 자바에서 Runnable 인터페이스 이다.


클래스와 달리 인터페이스는 다중 상속을 허용하기 때문에 특정 클래스에 멀티 쓰레드 기능을 추가 하기 쉬워진다.