[Java] 추상클래스와 인터페이스

고라니·2022년 2월 4일
0

추상클래스와 인터페이스의 차이는 면접 질문중 하나지만,

실무를 하고 개선작업을 진행하려하다 보니 설계에서 중요한 역할을 하기 때문에 사수님 따라서 더 찾고 공부해보았다.

결론부터 말하면 둘의 결은 같지만 사용 목적이 다르다는 것을 베이스로 이해하여야 한다는 것이다.

추상 클래스의 예시로 Creature(생명체) , Item (상품) 등을 생각해볼 수 있고

인터페이스의 예시로는 Printable, Closable 등을 생각 할 수 있다.

예시를 보면 살짝 감이 온다.

추상 클래스를 상속하게 된다면 자손클래스는 계속하여 공통된 모든 특징을 갖게 되는 것이고, 추상 클래스 중 한 개 추상 메소드나 필드라도 필요하지 않을 경우 못쓰는 것이기 때문에 이런 유동적인 상황에 대처하기 힘들다. (안좋다는 것이 절대 아니다)

그 때, 그런 부분들을 인터페이스를 통해 구현하게 된다면 각 조상 클래스가 다른 상황에서도 좋은 설계를 할 수 있는 것이다.

또한 Java의 다중상속 불가 특징이 인터페이스에는 적용되지 않기 때문에 여러 인터페이스를 Implements 한다면 더 직관적이고 좋은 설계가 되지 않을까 싶다.

참고할 만한 좋은 글 : 추상vs인터페이스-마이자몽

profile
공부를 열심히 하는 학부생

0개의 댓글