자바(Java) 추상클래스와 인터페이스

유필선·2024년 3월 7일
0

자바(Java)

목록 보기
8/20

추상클래스(Abstract Class) 란?

  • 추상 메서드를 선언해놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스

추상메서드는 선언부만이 존재하며, 구현부는 작성되어 있지 않다.
작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용하는 것이다.

추상클래스 특징

  • 추상메소드와 일반적인 메소드를 선언할 수 있다.
  • 추상 클래스를 상속받는 모든 서브 클래스들은 추상 메소드를 반드시 재정의 해야한다.
  • new 연산자 사용을 통한 인스턴스화가 불가능하다.
  • 추상 클래스를 선언할 때는 abstract 키워드를 사용해야 한다.
  • 다중 상속이 불가능 하다.

일반 클래스 사용과는 다르게 추상 클래스는 '시동'이라는 메서드에 중괄호{} 대신 세미콜론;이 붙는다

추상 메서드를 선언했다면 자식 클래스는 해당 메서드를 반드시 구현하도록 강제된다.
또한 자바는 다중 상속을 지원하지 않기 때문에 여러 개의 추상클래스를 상속할 수 없다.

인터페이스(Interface) 란?

  • 인터페이스도 추상 클래스와 비슷하게 다른 클래스를 작성하는데 도움을 주는 목적으로 작성한다.
  • 인터페이스는 추상 클래스보다 추상화 정도가 높아 추상 클래스와 다르게 구현부가 있는 일반 메서드, 일반 변수 멤버 등을 가질 수 없다.
  • 즉, 인터페이스는 구현된 게 아무것도 없는 기본 설계도라고 할 수 있다. 인터페이스 또한 인스턴스를 생성할 수 없다.

인터페이스 특징

  • 클래스에 다중 상속이 가능하다.
  • 인터페이스 안에는 무조건 추상 메서드만 들어가야 된다.
  • 메서드 앞에 abstract를 붙히지 않아도 된다.
  • 인터페이스를 상속 받을 때는 extends가 아니라 implements를 사용한다.
    ex) 엔진 implements 차
  • 인터페이스를 상속 받으면 무조건 오버라이딩 하는 메서드 앞에 public을 붙여야한다.


인터페이스의 가장 큰 특징은 상속에 구애받지 않는 구현이 가능하다는 것이다.

인터페이스 / 추상클래스 비교

profile
이해해버려라!

0개의 댓글