728x90
반응형
SMALL
안녕하세요! 😊
오늘은 Java의 인터페이스(interface)와 추상 클래스(abstract class)에 대해 알아보겠습니다.
이 두 개념은 객체지향 프로그래밍에서 중요한 역할을 해요. 처음엔 헷갈릴 수 있지만, 차근차근 배우다 보면 금방 익숙해질 거예요! 💪
1. 인터페이스(interface)란? 🧩
인터페이스는 클래스가 따라야 할 약속이나 규칙을 정의하는 틀입니다.
- 인터페이스에는 추상 메서드(내용이 없는 메서드)만 선언할 수 있어요.
- 👉 비유: 콘센트 규격. 전자기기는 콘센트 규격을 따라야만 작동할 수 있죠!
특징
- 구현(내용)이 없는 메서드 선언만 포함합니다.
- 다중 상속(여러 인터페이스를 구현)이 가능합니다.
- 클래스는
implements
키워드로 인터페이스를 구현합니다.
// 인터페이스 선언
interface Animal {
void sound(); // 추상 메서드 (구현 X)
}
// Dog 클래스는 Animal 인터페이스를 구현
class Dog implements Animal {
public void sound() {
System.out.println("Woof!"); // 인터페이스 메서드 구현
}
}
// Cat 클래스도 Animal 인터페이스를 구현
class Cat implements Animal {
public void sound() {
System.out.println("Meow!"); // 인터페이스 메서드 구현
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog(); // Dog 객체 생성
dog.sound(); // 출력: Woof!
Animal cat = new Cat(); // Cat 객체 생성
cat.sound(); // 출력: Meow!
}
}
동작 설명:
Animal
인터페이스는sound()
메서드를 선언했습니다.Dog
와Cat
클래스가 각각sound()
메서드를 구현했어요.- 인터페이스를 사용하면 동일한 메서드 이름으로 다른 동작을 쉽게 정의할 수 있습니다.
2. 추상 클래스(abstract class)란? 🏗️
추상 클래스는 공통된 특성을 정의하는 설계도입니다.
- 추상 메서드(구현 없는 메서드)와 일반 메서드(구현이 있는 메서드)를 모두 가질 수 있어요.
- 👉 비유: 자동차 설계도. 일부 기능(엔진, 바퀴)은 공통으로 정의하고, 다른 기능(색상, 내부 디자인)은 각각 다르게 구현할 수 있죠!
특징
abstract
키워드를 사용합니다.- 단일 상속(한 번에 하나의 클래스만 상속)만 가능합니다.
- 추상 메서드를 포함하며, 자식 클래스에서 반드시 구현해야 합니다.
// 추상 클래스 선언
abstract class Shape {
// 추상 메서드 (구현 X)
abstract void draw();
// 일반 메서드 (구현 O)
void message() {
System.out.println("This is a shape.");
}
}
// Circle 클래스는 Shape 추상 클래스를 상속
class Circle extends Shape {
void draw() {
System.out.println("Drawing a Circle!");
}
}
// Rectangle 클래스도 Shape 추상 클래스를 상속
class Rectangle extends Shape {
void draw() {
System.out.println("Drawing a Rectangle!");
}
}
public class Main {
public static void main(String[] args) {
Shape circle = new Circle(); // Circle 객체 생성
circle.message(); // 출력: This is a shape.
circle.draw(); // 출력: Drawing a Circle!
Shape rectangle = new Rectangle(); // Rectangle 객체 생성
rectangle.message(); // 출력: This is a shape.
rectangle.draw(); // 출력: Drawing a Rectangle!
}
}
동작 설명:
Shape
추상 클래스는 공통 메서드(message()
)와 추상 메서드(draw()
)를 정의했습니다.Circle
과Rectangle
클래스는Shape
를 상속받아draw()
메서드를 각각 구현했어요.- 공통된 동작은 추상 클래스에서, 각자의 특성은 자식 클래스에서 정의할 수 있습니다.
인터페이스와 추상 클래스의 차이 🧐
특징 | 인터페이스 | 추상 클래스 |
---|---|---|
목적 | 규칙 정의 (무엇을 해야 하는지) | 설계도 작성 (공통 동작 정의 포함) |
상속 개수 | 다중 구현 가능 (implements ) |
단일 상속만 가능 (extends ) |
메서드 종류 | 추상 메서드만 (Java 8부터는 기본 메서드 포함 가능) | 추상 메서드와 일반 메서드 모두 가능 |
사용 키워드 | interface |
abstract class |
이해가 어렵다면? 😅
처음에는 "인터페이스와 추상 클래스가 왜 필요하지?" 같은 의문이 생길 수 있어요.
🔑 팁:
- 인터페이스는 규칙과 약속을 정의하는 데 사용하세요.
- 추상 클래스는 공통된 기능과 구체적인 설계를 정의할 때 사용하세요.
직접 예제를 따라 해 보면서 차이를 느껴보세요! 😊
왜 중요한가요?
인터페이스와 추상 클래스는 코드 재사용성과 유지보수성을 높이는 데 필수적입니다.
실무에서도 규칙(인터페이스)과 설계(추상 클래스)를 적절히 활용하면 더 나은 코드 구조를 만들 수 있어요. 💡
오늘도 학습하느라 정말 수고 많으셨어요! 😊
조금씩 배우다 보면 인터페이스와 추상 클래스가 점점 친숙해질 거예요. 여러분의 성장을 응원합니다. 화이팅! ❤️
반응형
SMALL
'객체지향 프로그래밍(OOP)' 카테고리의 다른 글
Java 내장 객체지향 기능 활용 가이드: Enum과 Record 쉽게 배우기 (0) | 2024.12.19 |
---|---|
Java Reflection API 완벽 가이드: 초보자도 쉽게 배우는 활용법과 예제 (0) | 2024.12.18 |
[객체지향 프로그래밍] SOLID 원칙 완벽 정리: SRP, OCP, LSP, ISP, DIP 개념과 예제 코드 (0) | 2024.12.18 |
[쉬운설명] 함수형 프로그래밍 vs 객체지향 프로그래밍: 핵심 차이점 비교 (0) | 2024.12.18 |
[Java] 의존성 주입 (Dependency Injection) 개념과 장점 쉽게 이해하기 (3) | 2024.12.18 |