[Java] : 인터페이스 vs 추상클래스

dohyoungK·2024년 2월 28일
0

면접 스크립트

목록 보기
6/25
post-thumbnail

[Java] 인터페이스 vs 추상클래스


Interface

클래스에서 특정 기능(메소드)을 구현하도록 강제 할 수 있는 기능

interface 인터페이스이름 {
	...
    public abstract void 메서드이름();
    public default void 메서드이름() {};
}

Interface 특징

  • 인터페이스는 interface 키워드를 사용하여 정의한다.
  • 클래스에서 인터페이스의 구현은 implements 키워드를 사용하여 구현할 인터페이스를 지정후, 추상메소드를 모두 오버라이드 하여 내용을 완성해야 한다.
  • 인터페이스는 상수와 추상메소드로 구성되어 있다. (자바8부터 default 메소드와  static 메소드 사용 가능하게 되었고, 이 두가지 메소드는 오버라이딩이 강제가 아니므로 규제가 완화되었다.)
  • 인터페이스는 다른 인터페이스를 extends 키워드로 상속 받을 수 있으며, 다중 상속이 가능하다.
  • 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 주로 사용한다.

Interface의 장점과 사용 이유

  • 인터페이스를 작성해 틀을 미리 만들어 놓으면 일관되고 정형화된 개발을 위한 표준화가 가능하다.
  • 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있기 때문에, 개발 시간 단축이 가능하다.
  • 클래스와 클래스 간 관계를 인터페이스로 연결해 클래스마다 독립적인 프로그래밍이 가능하다.

Abstract Class

하위 클래스들의 공통점들을 모아 추상화한 클래스로, 추상 메소드를 선언하면서 상속을 통해 하위 클래스에서 메소드를 구현하도록 한다.

public abstract class 클래스이름 {
    ...
    public abstract void 메서드이름();
}

Abstract Class 특징

  • 추상 클래스는 abstract 키워드를 사용하여 정의한다.
  • 추상 클래스는 다중 상속 불가능하고 단일 상속만 허용한다.
  • 추상 클래스는 추상 메소드 외 일반적인 필드, 메소드, 생성자를 가질 수 있다.
  • 추상 클래스는 클래스 간 연관관계 구축에 초점을 둔다.

Abstract Class 장점과 사용 이유

  • 상속을 통해 중복 코드를 줄일 수 있다.
  • 자식 클래스를 그룹화할 수 있다.

인터페이스 vs 추상 클래스

구분인터페이스추상 클래스
키워드interfaceabstract
변수static final(상수)제한 없음
접근 제어자public제한 없음
상속 키워드implementsextends
다중 상속OX
  • 공통점 : 추상 메소드를 가지며 인스턴스화(new) 할 수 없다. 인터페이스와 추상 클래스를 구현, 상속한 클래스는 추상 메소드를 반드시 구현해야 한다.

  • 차이점 : 대표적으로 다중 상속 여부의 차이가 있지만, 인터페이스는 정의된 메소드를 각 클래스의 목적에 맞게 동일한 기능을 구현하는 것에 초점을 두고, 추상 클래스는 자신의 기능들을 하위 클래스로 확장시키는 것에 초점을 둔다.

0개의 댓글