추상클래스와 인터페이스 정의는
어느 클래스의 구현체가 어떤 기준에 의하여 여러 개가 나올 수 있다면 그 클래스들을 하나의 타입으로 묶어줄 수 있는 역할을 한다.
추상클래스
- 구현체를 포함한다.
- 추상클래스로 정의된 클래스는 반드시 추상클래스를 상속받아야 한다.
- 단일 상속이기 때문에 다중 상속을 할 경우엔 상속을 여러번 받아야 한다.
인터페이스
- 구현체가 없다.
- 구현 계약을 지킨다면 다중 구현이 가능하다.
추상클래스는 부모-자식 관계가 성립되어야만 구현이 가능하도록 의존관계가 생겨서 어느 한 클래스가 수정되면 의존관계인 클래스들에 손상을 줄 수가 있다.
따라서 엄격하게 적합성 여부를 따져봐야 한다.
또 여러 클래스를 타입으로서 정의만 하는 것 외에도 기능의 진화에 더 중점을 두고 있습니다.
인터페이스는 같은 목적으로 사용되는 여러 클래스를 하나의 타입으로 사용되는 데 있다. 이는 여러 클래스를 유연하게 변경할 수 있게하기 위함이다.
구현된 클래스는 타입 계층으로 엄격하게 계층 구조가 되어있는 상태이다.
하지만 예외가 생길 시 수정이 가해지면 계층이 무너지니
이 때 인터페이스와 추상클래스를 이용하여 비계층구조를 포함시키면 수정이 생겨도 유연하게 대처할 수 있을것이다.
처음에 어떤 프로그램을 개발할 시 잘 설계된 구조로 개발하면 추상클래스, 인터페이스가 필요없을 것 같다.
하지만 차츰 업그레이드하면서 내용이 수정되고 추가되고 하는 시점에서 차츰 하나씩 추상클래스와 인터페이스가 생겨날 것이다.
'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 |
댓글