추상 클래스와 인터페이스 차이점 이해하기

2024. 4. 15. 20:46Language/Java

 

추상 클래스는 일부 메서드를 구현할 수 있지만,
인터페이스는 모든 메서드가 추상이며 구현을 갖지 않는다.

 

개념

 

먼저, 추상 클래스와 인터페이스 개념을 알아보자

 

추상 클래스란?

 

abstract 키워드를 사용하여 선언되는 클래스로, 하나 이상의 추상 메서드를 포함한다.추상 메서드는  선언만 존재하고 구현은 하지 않으며, 상속받는 하위 클래스에서 구현 내용을 완성해야 한다.

 

즉, 추상 클래스는 설계 템플릿 역할을 하며 공통적인 속성과 기능을 정의하고 하위 클래스에 구체적인 구현을 맡긴다.

 

인터페이스란?

 

interface 키워드를 사용하여 선언되는 클래스로, 상수(static final)와 추상 메서드(abstract method)의 집합이다.

인터페이스는 객체의 행동에 초점을 맞추고, 구체적인 구현은 인터페이스를 구현하는 클래스에서 담당한다.

코드의 유연성을 높이고 서로 다른 객체 간의 상호 작용을 촉진하는 데 효과적이다.

 

특징

구분 추상 클래스 인터페이스
사용 키워드 abstract interface
메서드 추상 메서드 및 일반 메서드 포함 가능 모든 메서드가 추상 메서드 (default 메서드 제외)
필드 일반 필드 및 상수 필드 포함 가능 모든 필드가 public static final 상수
상속 다중 상속 불가능 다중 상속 가능
상속 키워드 extends implements
용도 클래스간의 연관 관계 구축 및 중복되는 클래스 멤버
통합/확장
동일한 동작 보장 및 다중 구현
주요 특징 추상화 및 중복 코드 제거 추상화 및 유연성
사용 예시 동물(Animal) 클래스, 도형(Shape) 클래스 Comparable 인터페이스, Cloneable 인터페이스

 

추상클래스 예제 코드

abstract class Animal {
  abstract void makeSound();

  public void eat() {
     System.out.println(“먹다”);
  }
}

class Dog extends Animal {
   @Override
   void makeSound() {
      System.out.println(“멍멍”);
   }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.makeSound(); 
        dog.eat(); 
    }
}

 

 

추상클래스는 서로 관련 있는 클래스들 간의 기능을 추상화하여 제공한다.

주로 is-a 관계에 사용되고, 자식 클래스가 추상클래스의 특정 유형임을 나타낸다.

 

인터페이스 예제 코드

interface Comparable {
    int compareTo(Object o);
}

class Person implements Comparable {
   @Override
   public int compareTo(Object o) {
   }
}

class Car implements Comparable {
  @Override
  public int compareTo(Object o) {
  }
}

 

인터페이스는 클래스들의 특정 동작을 수행할 수 있도록 규약을 제공하는 것이다.