728x90
Java 프로그래밍에서 추상 클래스와 인터페이스는 객체 지향 설계의 핵심적인 개념입니다. 이 둘은 코드 재사용성을 높이고 유연한 설계를 가능하게 하지만, 초보 개발자들에게는 혼란스러울 수 있습니다. 이 글에서는 추상 클래스와 인터페이스의 개념, 차이점, 그리고 활용 방법을 명확하게 설명하여 여러분의 이해를 돕고자 합니다.
1. 추상 클래스 (Abstract Class)
개념: 추상 클래스는 구체적인 구현 없이 메서드의 선언만 있는 추상 메서드를 포함할 수 있는 클래스입니다. 쉽게 말해, 밑그림만 그려져 있고 세부적인 내용은 채워지지 않은 클래스라고 생각하면 됩니다. 추상 클래스는 abstract 키워드를 사용하여 선언합니다.
특징:
- 인스턴스화 불가: 추상 클래스는 직접 객체를 생성할 수 없습니다.
- 추상 메서드 포함 가능: 추상 메서드는 구현 코드 없이 선언만 되어 있으며, 상속받는 클래스에서 반드시 구현해야 합니다.
- 일반 메서드와 변수 포함 가능: 추상 메서드뿐만 아니라 일반 메서드와 변수도 가질 수 있습니다.
예시:
Java
abstract class Animal {
public abstract void makeSound(); // 추상 메서드
public void eat() { // 일반 메서드
System.out.println("냠냠");
}
}
2. 인터페이스 (Interface)
개념: 인터페이스는 모든 메서드가 추상 메서드인 특별한 종류의 클래스입니다. 일종의 계약서와 같은 역할을 하며, 특정 메서드들을 구현하도록 강제합니다. 인터페이스는 interface 키워드를 사용하여 선언합니다.
특징:
- 인스턴스화 불가: 인터페이스는 직접 객체를 생성할 수 없습니다.
- 모든 메서드는 추상 메서드: 인터페이스는 추상 메서드만 가질 수 있습니다. (Java 8부터 default 메서드와 static 메서드도 가질 수 있지만, 이 글에서는 기본 개념에 집중합니다.)
- 상수 선언 가능: 인터페이스는 상수를 선언할 수 있습니다.
예시:
Java
interface Flyable {
void fly(); // 추상 메서드
}
3. 추상 클래스 vs 인터페이스
특징추상 클래스인터페이스
메서드 | 추상 메서드, 일반 메서드 모두 가능 | 추상 메서드만 가능 |
변수 | 일반 변수, 상수 선언 가능 | 상수만 선언 가능 |
상속 | extends 키워드 사용, 단일 상속만 가능 | implements 키워드 사용, 다중 구현 가능 |
관계 | "is-a" 관계 (예: Dog is an Animal) | "can-do" 관계 (예: Bird can fly) |
Sheets로 내보내기
4. 활용 방법
- 추상 클래스: 공통적인 기능을 가진 클래스들의 부모 클래스로 사용하여 코드 중복을 줄이고, 일부 메서드는 상속받는 클래스에서 구현하도록 강제할 때 유용합니다.
- 인터페이스: 서로 다른 클래스들이 공통적인 메서드를 갖도록 강제하여, 다형성을 높이고 코드 유연성을 확보할 때 유용합니다.
5. 마무리
추상 클래스와 인터페이스는 Java 프로그래밍에서 중요한 개념이며, 객체 지향 설계 원칙을 따르는 데 필수적인 요소입니다. 이 글을 통해 추상 클래스와 인터페이스의 개념과 차이점을 이해하고, 적재적소에 활용하여 효율적이고 유연한 코드를 작성할 수 있기를 바랍니다.
인터페이스는 클래스가 아니기에 클래스를 사용하지 않는다.
인터페이스는 변수를 사용 할 수 없다> 상수는 사용가능 하다
상수라느 한변 결정되면 값을 바꾸지 못하고 static 으로 되어 있는 변수는 사용 가능 하다
상
728x90
'☕Java' 카테고리의 다른 글
Java [ ArrayList 와 HashMap ] (0) | 2024.12.17 |
---|---|
Java에서 문자열과 숫자 간 변환: 쉽게 이해하기(부록 문자열 함수소개) (0) | 2024.12.16 |
Java 상속이란? + 문제풀이 (1) | 2024.12.15 |
자바 초보자를 위한 Constructor (생성자) 활용법 – 주소록 프로그램 만들기 (0) | 2024.12.11 |
🖥️ 자바에서 명령어가 메모리를 활용하여 구동되는 원리 (완전 쉬운 설명!) (0) | 2024.12.10 |