ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 추상클래스와 인터페이스의 차이점
    Java 2019. 6. 18. 01:15

    이것은 전적으로 내 경험에 기반한 생각이지만

    java를 통해 코딩을 배우는 학생과 현업에서 실무를 하는 직장인 모두

    추상클래스와 인터페이스를 많이 사용하진 않는 것 같다.

    학생 때 사용한 경험은 자바 기본 문법에서 인터페이스와 추상클래스를 배울 때 정도였던 것 같고

    실무에서는 Spring의 DI를 위해 Service 레이어를 만들 때 ~Service를 인터페이스로 의무적으로 만들고

    이를 구현하는 방식이었던것 같다.

     

    서론이 길었지만 먼저 제목은 차이점이지만 공통점부터 알아보자.

    > 추상클래스 또는 인터페이스의 추상메소드를 구현체가 구현 한다.

    결국은 추상 메소드를 구현하는 건데 왜 이것에 대한 구분이 필요한 것일까?

    인터페이스와 추상클래스는 존재의 목적이 다르다.

    누구는 인터페이스를 다중 상속을 위해서 만든 것이라고 한다. 

    이유는 다중상속의 해결책으로 인터페이스를 사용하는 경우가 종종 있기 때문인 것 같다.

    그렇지만 인터페이스의 목적은 이것이 아니다.

    인터페이스는 구현체가 인터페이스의 모든 함수를 강제로 구현해야한다.

    결론적으로 기능을 강제하는 것이다.

    예를들어 리모컨 인터페이스를 구현한 TV리모컨(구현체) 이라는 클래스가 있다면

    이 TV리모컨 클래스는 리모컨 인터페이스라면 반드시 있어야 될 전원버튼과 같은 버튼들의 기능을

    반드시 구현해야 한다는 것이다.

    이를 보통 "동작을 보장한다" 라고 표현한다.

     

    추상클래스는 말 그대로 일반적인 추상화 및 상속의 관점이다.

    추상 클래스를 상속받은 자식클래스는 추상 클래스의 모든 추상메소드를 반드시 구현해야 하는 것은 아니다.

    그렇기 때문에 추상클래스는 객체를 추상화하는데 목적이 있다.

    예를 들어 많이 사용되는 예제인 동물 이라는 추상클래스가 있고 이를 상속받는 사자, 호랑이, 강아지 등의 자식 클래스를 만드는 경우다.

    'Java' 카테고리의 다른 글

    자바 오버로딩, 오버라이드  (0) 2023.03.16
    Java Generic 이란  (0) 2023.03.16

    댓글

Designed by Tistory.