추상 클래스와 인터페이스 차이점 이해하기
2024. 4. 15. 20:46ㆍLanguage/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) {
}
}
인터페이스는 클래스들의 특정 동작을 수행할 수 있도록 규약을 제공하는 것이다.
'Language > Java' 카테고리의 다른 글
@Valid와 rejectValue()로 유연하게 유효성 검증하기 (0) | 2024.07.02 |
---|---|
JAVA 싱글톤 알아야 할 것 (0) | 2024.07.01 |
Redirect VS Forward 개념 및 특징 (0) | 2024.06.16 |
세션과 쿠키 : Spring Boot를 활용한 세션 관리와 자동 로그인 구현 (0) | 2024.06.16 |