Java

추상클래스와 인터페이스

WOOOOJI 2023. 1. 13. 22:14

요즘 스프링부트에 빠져서 웹 개발을 하다보니 자바에 대한 중요성을 점점 잃어가는거

같아서 복습할겸 중요 포인트들을 글로 남기기로 했습니다 🙂


추상 클래스 (Abstract class)

추상 클래스는 구현부 내부에 추상 메소드가 하나 이상 포함되있거나 abstract 로 정의되어있는 경우를 의미합니다.

abstract class 를 상속 받은 클래스는 (하위 클래스) 필요에 의해 정의된 메소드를 overriding 하여서 사용합니다!

  • 추상 클래스는 new연산자를 통하여 객체를 생성할 수 없습니다.
  • 추상 클래스는 단일 상속만 가능합니다. 고로 일반변수를 가질 수 없습니다.
  • 공통된 필드와 메소드를 정의해놓고 일반 클래스가 상속을 받을시 코드를 작성하는 시간을 절약할수 있습니다.
  • 추상 클래스와 일반 클래스(하위 클래스)는 상속관계에 놓여있습니다
  • 추상 클래스는 동일한 부모를 가지는 클래스들을 묶는 개념입니다. 상속을 받아서 기능을 확장하는것이 주 목적입니다.

인터페이스 (Interface)

인터페이스는 단순합니다. 모든 메소드가 추상메소드인것을 인터페이스라고 부릅니다.

  • 인터페이스도 추상 클래스와 마찬가지로 new 연산자를 사용하여 객체를 생성할 수 없습니다.
  • 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하는 것이 목적입니다!
  • 인터페이스는 추상 클래스와 반대로 다중 상속이 가능합니다🙂
  • 인터페이스는 static final 필드만 가질 수 있다 ⇒ public static final 이 생략되있는겁니다.
  • 기존에는 인터페이스에 일반 메소드를 구현할 수 없었지만, 자바 8버전부터 default 예약어를 통해 일반 메소드구현이 가능합니다.

Interface & Abstract Class 공통점

  • new 연산자를 사용하여 객체를 생성할 수 없습니다.
  • 추상 클래스를 extends로 상속받은 자식들과 인터페이스를 implements하고 구현한 자식들만 객체 생성 가능합니다.
  • 추상 클래스와 인터페이스는 메소드 선언부만 있고 구현은 없는 클래스입니다

Interface & Abstract Class 차이점

  • 추상 클래스는 단일 상속 | 인터페이스는 다중 상속
  • 추상 클래스는 상속을 받아서 기능을 확장시키는것이 목적입니다 !
  • 인터페이스는 상속을 받아서 특정 메소드가 반드시 존재하도록 강제성을 띄우는것, 즉 구현 객체들이 같은 역할 동작을 하는것을 보장하기 위한것입니다 !

최종 정리

모듈화 시키는것이 어떻게 보면 추상 클래스의 역할이고

인터페이스는 특정한 틀을 지어놓고, 나머지 클래스들은 그 틀에 맞게 코드를 작성하는

일종의 블루프린트 같은 역할을 하는것 이다! 라고 생각할 수 있겠네요 🙂

728x90