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

이동엽·2022년 3월 2일
0

java

목록 보기
4/18

💡 추상클래스와 인터페이스의 정의

추상 클래스란?

  • 자바에서는 하나 이상의 추상 메소드를 포함하는 클래스를 가리켜
    추상 클래스(abstract class)
    라고 한다.
  • 이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인
    다형성을 가지는 메소드의 집합을 정의
    할 수 있도록 해준다.
  • 주로 실체 간에 공통되는 특성을 추출한 것을 말하고, 객체를 직접 생성할 수 있는 클래스가 실체 클래스라면 이 들의 공통적인 특성을 추출해서 선언한 것을 추상 클래스 라고 한다.

인터페이스란?

  • 자바에서 인터페이스는 객체의 사용 방법을 정의한 타입이다.
  • 인터페이스는 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다.
  • 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다.
  • 중간에 인터페이스를 두는 이유는 개발 코드를 수정하지 않고,사용하는 객체를 변경하기 위함임.

💡 추상클래스와 인터페이스의 적절한 용도

추상클래스가 적절한 사용 경우

  • 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
  • 추상클래스를 상속받은 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public 이외의 접근제어자(protected, private) 사용이 필요한 경우
  • non-static, non-final 필드 선언이 필요한 경우. 즉, 각 인스턴스에서 state 변경을 위한 메소드를 선언할 수 있다.

인터페이스가 적절한 사용 경우

  • 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우
  • 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우
  • 다중상속을 허용하고 싶은 경우

인터페이스추상클래스
다중 상속 가능다중 상속 불가능
추상 메소드만 사용 가능일반 메소드와 추상 메소드 모두 가능
상속시 모든 메소드를 구현해야함상속시 추상 메소드만 구현해도 됨
여러 다중 인터페이스를 구현 가능클래스이므로 다중 상속이 불가능
속도면에서 추상클래스보다 느림속도면에서 인터페이스보다 빠름
profile
백엔드 개발자로 등 따숩고 배 부르게 되는 그 날까지

0개의 댓글