728x90
짝꿍이 추상 클래스와 인터페이스의 차이에 대해서 고민을 하는 모습이 보였다.
도와주고 싶었으나 막상 설명을 해주려니 나도 명확하게 이야기하기가 어려웠다.
클래스는 단일 상속, 인터페이스는 다중 상속이 가능하다는 것 외에는
나도 둘의 명확한 차이를 잘 모르겠더라..🤔
그래서 이번 기회에 둘의 차이를 작성해보려고 한다.
추상 클래스와 인터페이스의 차이
구분 | 추상 클래스 | 인터페이스 | |
공통점 | 객체 생성 | 인스턴스화 할 수 없음(new 생성자를 사용하지 않음) 👉 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 함 |
|
추상 메서드 | 추상 메서드를 가지고 있어야 함 | ||
기능적 목적 | 상속 받는 클래스에서는 추상 메서드를 반드시 재정의하여 구현해야 함 | ||
차이점 |
정의 | 하나 이상의 추상 메서드를 가지는 클래스 추상 메서드를 선언하여 상속을 통해서 하위 클래스에서 반드시 구현하도록 강제하는 클래스 |
오직 추상 메서드와 상수만을 가지고 있는 것 추상 메서드를 implements하는 클래스에서 반드시 구현하도록 강제함 |
목적 | 상속 받아서 기능을 확장 | 구현 객체의 동일한 실행 기능을 보장 | |
클래스 | 클래스임 | 클래스가 아님 | |
메서드 | 제한이 없음 | abstract method, private method, static method, default method (뒤의 둘은 Java 8 이후 가능해짐) |
|
멤버 변수 | 일반 클래스와 동일하게 변수 선언 및 사용 가능 | 상수만 사용 가능 | |
상속 키워드 | extends | implements | |
다중 상속 | 불가능 | 가능 |
그래서 각자 언제 쓰는데?
- 여러 개의 클래스가 공통적인 부모를 생성할 수 있으면?
👉 추상 클래스를 사용- Parrot, Tiger, People은 Animal이라는 대분류로 묶을 수 있음
👉 Animal이라는 abstract class를 생성하여 상속을 받게 설계
- Parrot, Tiger, People은 Animal이라는 대분류로 묶을 수 있음
- 공통적인 부모는 생성하기에 애매하나 공통으로 구현해야 할 부분이 있다면?
👉 인터페이스 사용- Tiger, People은 말을 할 수 있음. 그런데 대분류로 묶기에는 애매함
👉 Talkable이라는 인터페이스를 implents하여 구현
- Tiger, People은 말을 할 수 있음. 그런데 대분류로 묶기에는 애매함
아래 사진을 보면 이해하기 한층 수월해진다.
출처
'Language > Java' 카테고리의 다른 글
짝수와 홀수 (2) | 2024.09.12 |
---|---|
[Java] 타입 변환 쉽게 이해하기 (2) | 2024.04.08 |
[정보처리기사] 2023년 Java 프로그래밍 언어 문제 (0) | 2024.04.08 |
[정보처리기사] 2022년 Java 프로그래밍 언어 문제 (0) | 2024.04.07 |
[정보처리기사] 2021년 Java 프로그래밍 언어 문제 (0) | 2024.04.07 |