본문 바로가기
Java, JSP

추상클래스 vs 인터페이스

by 수앙 2012. 2. 5.
추상클래스와 인터페이스 정의는
어느 클래스의 구현체가 어떤 기준에 의하여 여러 개가 나올 수 있다면 그 클래스들을 하나의 타입으로 묶어줄 수 있는 역할을 한다.

추상클래스
- 구현체를 포함한다.
- 추상클래스로 정의된 클래스는 반드시 추상클래스를 상속받아야 한다.
- 단일 상속이기 때문에 다중 상속을 할 경우엔 상속을 여러번 받아야 한다.

인터페이스
- 구현체가 없다.
- 구현 계약을 지킨다면 다중 구현이 가능하다.

추상클래스는 부모-자식 관계가 성립되어야만 구현이 가능하도록 의존관계가 생겨서 어느 한 클래스가 수정되면 의존관계인 클래스들에 손상을 줄 수가 있다.
따라서 엄격하게 적합성 여부를 따져봐야 한다.
또 여러 클래스를 타입으로서 정의만 하는 것 외에도 기능의 진화에 더 중점을 두고 있습니다.

인터페이스는 같은 목적으로 사용되는 여러 클래스를 하나의 타입으로 사용되는 데 있다. 이는 여러 클래스를 유연하게 변경할 수 있게하기 위함이다.

구현된 클래스는 타입 계층으로 엄격하게 계층 구조가 되어있는 상태이다.
하지만 예외가 생길 시 수정이 가해지면 계층이 무너지니
이 때 인터페이스와 추상클래스를 이용하여 비계층구조를 포함시키면 수정이 생겨도 유연하게 대처할 수 있을것이다.

처음에 어떤 프로그램을 개발할 시 잘 설계된 구조로 개발하면 추상클래스, 인터페이스가 필요없을 것 같다.
하지만 차츰 업그레이드하면서 내용이 수정되고 추가되고 하는 시점에서 차츰 하나씩 추상클래스와 인터페이스가 생겨날 것이다.

'Java, JSP' 카테고리의 다른 글

Java Socket & ServerSocket options  (0) 2013.04.20
IO vs NIO performance compare (성능 비교)  (0) 2013.02.14
JSP request, response 과정  (0) 2012.01.13
Java에서 DB Stored Procedure 정보 알아내기  (0) 2011.09.11
lombok  (1) 2011.07.14

댓글