BackEnd/Java
Java :: Abstract vs Interface
초록 (green)
2016. 10. 28. 12:51
1. Abstract (추상 클래스)
반드시 한 개 이상의 추상 메소드를 가지고, 객체를 생성하지 않는다.
슈퍼 클래스로 사용이 가능하며 추상 메소드가 하나 이상만 있으면 된다.
2. Interface (인터페이스)
서로 다른 클래스를 연결시켜주는 연결 장치이다.
슈퍼 클래스의 용도로 사용이 가능하며, 반드시 추상 메소드로만 구현되어야 한다.
* Class > Abstract > Interface
3. 차이점
|
Abstract |
Interface |
추상 메소드 유무 |
1개 이상의 추상 메소드 |
전부 추상 메소드 |
상속 유무 |
단일 상속만 가능 |
다중 상속 가능 |
4. DTO 에서 Interface를 사용하는 이유
프로그램 설계시 클래스의 구조가 1번의 경우일 때에는 A부터 C까지 쭉 상속을 받아 단일 상속으로 가능한 Abstract로 구현하면 되지만, 2번의 경우일 때에는 관련 없는 D 클래스가 있는 경우도 있기 때문에 보통은 Interface를 사용한다.
(2번 같은 경우에는 B를 상속받고 D를 인터페이스로 사용한다)