BE전문가 프로젝트

11. 추상 클래스와 인터페이스의 차이 본문

JAVA

11. 추상 클래스와 인터페이스의 차이

원호보고서 2023. 11. 9. 23:21

이전 포스팅을 살펴보면 추상 클래스와 인터페이스는 서로 같은 목적을 가지고 있다는 것을 확인 할 수 있다. 그것은 바로 추상 메소드를 구현해야 한다는 것이다. 눈으로 확인 할 수 있는 차이점은 인터페이스에 있는 메소드들은 모두 추상 메소드이지만 추상 클래스의 경우 추상 메소드를 선택하여 구현할 수 있다. 여기서 드는 의문점은 interface의 존재의 이유였다. 추상 클래스가 존재함에도 불구하고 interface가 있는 이유는 무엇일까?

 

사용 목적

추상클래스

  • 자식 및 부모를 계속해서 확장시 킬 수 있다. 따라서 확장에 용이하다

인터페이스

  • 다중 인터페이스 구현를 구현할 수 있다.

여기서 알 수 있듯이 자바에서는 다중 상속이 불가능하다는 특징을 가지고 있다. 다중 상속의 문제점 때문이다.

다중 상속의 문제점이랑 상속받은 자식 클래스에 같은 이름의 멤버가 존재할 가능성이 있다는 것과 두 번 이상 상속 받을 가능성이 있다는 것이다. 수백개의 자식과 부모가 있는 상황에 다중 상속이 가능 했다면 이 문제점을 피해가지 못했을 것이다. 이러한 문제를 미연에 방지하기 위해 자바에서는 다중 상속을 못하게 막았다. 

 

그러한 점을 해결하기 위해 나온 것이 바로 interface이다. interface는 구현이라는 표현에 맞게 자식과 부모의 관계가 아니다. 인터페이스 안에는 추상 클래스와 다르게 모든 것이 메서드 구현부가 비어있는 추상 메소드이다. 메소드의 이름이 같더라도 구현부가 비어있으니 모호할 상황이 생기지 않는다. 따라서 다중 상속의 문제점을 피해갈 수 있는 것이다. 이전 포스팅을 보면 다중 인터페이스를 구현하는 법이 있으니 참고 바란다.

 

 

'JAVA' 카테고리의 다른 글

13. 익명 객체  (0) 2023.11.11
12. 중첩 클래스 및 인터페이스  (0) 2023.11.10
10. 인터페이스  (0) 2023.11.09
9. 추상 클래스  (0) 2023.11.09
8. 클래스의 타입 변환 및 다형성  (0) 2023.11.08
Comments