스물두줄

정보관리기술사 · 소프트웨어 공학

추상 클래스와 인터페이스

추상 클래스와 인터페이스는 Java 객체지향 설계에서 상속과 구현 강제 방식을 정한다. 추상 클래스는 공통 골격을 가진 상속 전용 클래스다. 인터페이스는 구현 클래스가 따라야 할 메서드 명세의 집합이다. 두 개념을 헷갈리면 다이어그램과 선언부를 잘못 쓰게 된다. 두…

주요 장면

  1. 0:02 무엇인가
  2. 0:25 구조 비교
  3. 0:53 예시로 보기
  4. 1:22 헷갈리는 점
  5. 1:55 정리와 정답

대본

무엇인가

추상 클래스와 인터페이스는 Java 객체지향 설계에서 상속과 구현 강제 방식을 정한다.

추상 클래스는 공통 골격을 가진 상속 전용 클래스다.

인터페이스는 구현 클래스가 따라야 할 메서드 명세의 집합이다.

두 개념을 헷갈리면 다이어그램과 선언부를 잘못 쓰게 된다.

구조 비교

두 개념의 차이는 표로 정리하면 한눈에 들어온다.

추상 클래스는 단일 상속만 가능하고 인스턴스 변수와 생성자를 가진다.

인터페이스는 여러 개를 구현할 수 있지만 필드는 상수뿐이다.

인터페이스는 생성자가 없고, Java 8 이후 default 메서드를 가질 수 있다.

두 개념 모두 new 로 직접 생성할 수 없다는 점은 같다.

예시로 보기

예시로 가전 제품 제어 시스템을 보자. 이 구조는 가상의 예다.

모든 장치의 공통 상태와 부팅 순서는 추상 클래스 Appliance에 둔다.

원격 제어 기능은 인터페이스 Remotable에 계약으로 둔다.

스마트 TV는 Appliance를 상속하고 Remotable을 구현한다.

세탁기는 Appliance만 상속하므로 Remotable 계약이 바뀌어도 영향을 받지 않는다.

헷갈리는 점

시험에서 자주 틀리는 부분을 짚어 보자.

첫째, 추상 클래스와 인터페이스를 같은 것으로 쓰면 감점이다.

둘째, 인터페이스 메서드는 암시적으로 public abstract이다.

셋째, 추상 메서드는 몸체 없이 세미콜론으로 끝내며 클래스는 abstract로 선언한다.

정리와 정답

정답은 public이다. 인터페이스의 모든 메서드는 기본적으로 공개된다.

정리하면 추상 클래스는 단일 상속과 공통 상태, 인터페이스는 다중 구현과 계약이다.

설계할 때 공통 구현이 필요하면 추상 클래스, 행위 규격이 필요하면 인터페이스를 고른다.

시험에서는 두 개념의 차이를 표와 선언 코드로 함께 쓰는 연습이 필요하다.

같은 장의 영상