| 추상클래스 보다는 인터페이스를… 오라클자바커뮤니티에서 설립한 개발자실무교육6년차 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클, SQL, 튜닝, 자바, 스프링, Ajax, jQuery, 안드로이드, 아이폰, 닷넷, C#,
ASP.Net) www.onjprogramming.co.kr
이둘의 큰 차이라면 추상클래스는 구현된 메소드도 존재 가능하지만 인터페이스는 구현되지 않은 추상 메소드만 존재 가능 하다는 것입니다. 그러나 어떤 클래스가 인터페이스에 정의된 모든 메소드를 구현하고 인터페이스와의 계약된 구현을 지키기만 하면 클래스 계층구조와는 상관없이 같은 타입이 될 수 있지만 추상 클래스 타입이 되려면 반드시 이 추상클래스를 상속 받는 하위 클래스가 되어야 한다는 것입니다. 자바는 다중 상속을 지원하지 않으므로 타입을 정의 할 때 추상 클래스를 사용한다면 추후 많은 제약이 발생 할 수도 있습니다. 특히 인터페이스의 경우 이미 존재하는 클래스가 새로운 인터페이스를 구현하도록 고치는 것은 간단 합니다. 클래스 선언부에 implements 만 추가해 주면 됩니다. 이미 존재하는 클래스가 새로운 추상 클래스를 상속 받도록 고치는 것은 거의 불가능 한 일입니다. 만약 두개의 클래스가 같은 추상 클래스를 상속받게 할려면 이 두 클래스의 공통 조상 클래스를 하나 만들고 이 클래스가 추상 클래스의 하위 클래스가 되도록 재편성 해야 합니다. 인터페이스를 사용하게 되면 mixin 타입을 정의할 수 있습니다. 믹스인이란 어떤 클래스가 자신의 기본 타입외에 새로운 기능을 추가하기 위해 마음대로 추가 할 수 있는 타입을 말합니다.예를 들면 어떤 클래스가 자신의 인스턴스를 순서에 따라 정렬하고 싶으면 믹스인 인터페이스인 Comparable 인터페이스를 구현하면 됩니다. 이것은 존재하는 타입에 특정 기능을 골라서 “섞는”것과 유사해서 이런 종류의 인터페이스를 Mixin 이라고 부릅니다. 반면 추상 클래스는 믹스인을 정의 하는데 사용될 수 없습니다. 앞에서 본 것과 같이 이미 존재하는 클래스가 새로운 추상 클래스를 상속 받게 하는 것은 불가능 하기 때문입니다. 또한 인터페이스를 사용하게 되면 계층구조가 없는 타입 프레임워크를 만들 수 있습니다. 타입들이 계층 구조를 가지면 조직화 하기 좋은 점도 있지만 엄격한 계층 구조를 정의하기 어려운 경우도 있습니다. 예를 들어 가수를 표현하는 인터페이스와 작곡가를 표현하는 인터페이스가 있다고 할 때 public interface Singer { AudioClip sing(Song s); } Public interface SongWriter { Song compose(Boolean hit); } 실제 가수는 작곡가를 겸하는 경우도 있습니다. 이들을 인터페이스로 정의 했기 때문에 이 두 인터페이스를 구현하는 클래스를 별 무리 없이 만들어 낼 수 있습니다. 또한 Singer와 SopngWriter 인터페이스를 모두 상속 받는 새로운 인터페이스를 정의하고 요기에 새로운 메소드를 추가하는 것도 가능 합니다. Public interface SingerSongWriter extends Singer, SongWriter { AudioClip strum(); Void actSensitive(); } |
2013년 8월 28일 수요일
[oraclejava커뮤니티에서 강좌, 오라클자바교육,오라클교육,자바교육잘합니다]자바 추상클래스 보다는 인터페이스를…
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기