728x90
반응형
추상 클래스(Abstract Class)
개념
추상 클래스는 하나 이상의 추상 메소드(구현이 없고, 선언만 있는 메소드)를 포함할 수 있는 클래스입니다. 추상 클래스는 직접 인스턴스화할 수 없으며, 상속을 통해 자식 클래스에서 추상 메소드를 구현해야 합니다.
abstract class Animal {
abstract void makeSound();
void breathe() {
System.out.println("I can breathe.");
}
}
위 예제에서 Animal 클래스는 추상 클래스로, makeSound 메소드는 추상 메소드입니다. breathe 메소드는 일반 메소드로, 구현이 제공됩니다.
사용 이유
- 공통적인 메소드 구현을 제공하면서도, 일부 메소드는 자식 클래스에서 구현하도록 강제합니다.
- 다형성을 활용하여 일관된 인터페이스를 유지하면서도 다양한 구현을 할 수 있습니다.
인터페이스(Interface)
개념
인터페이스는 모든 메소드가 추상 메소드로만 구성된 순수 추상 타입입니다. Java 8 이후부터는 디폴트 메소드와 정적 메소드의 구현을 허용하여, 인터페이스의 유연성이 크게 향상되었습니다.
interface Flyable {
void fly();
default void navigate() {
System.out.println("I can navigate.");
}
}
위 예제에서 Flyable 인터페이스는 fly 추상 메소드와 navigate 디폴트 메소드를 포함합니다.
사용 이유
- 다중 상속의 문제를 회피하면서 여러 클래스에서 공통의 인터페이스를 구현할 수 있습니다.
- 클래스가 따라야 할 특정한 계약(메소드 세트)을 정의합니다.
추상 클래스와 인터페이스의 차이점
기준 | 추상 클래스 | 인터페이스 |
목적 | 공통된 기본 기능을 제공하고, 일부 기능을 확장 클래스에서 구현하도록 함 | 여러 클래스 간의 계약을 정의하고, 다중 상속을 지원 |
메소드 구현 | 추상 메소드와 일반 메소드 모두 포함 가능 | Java 8부터 디폴트 메소드와 정적 메소드 구현 가능 |
인스턴스 변수 | 포함 가능 | 포함 불가 (상수만 가능) |
다중 상속 | 지원하지 않음 | 지원 |
결론
Java에서 추상 클래스와 인터페이스는 코드의 재사용성과 확장성을 극대화하는 데 필수적인 요소입니다. 추상 클래스는 공통된 기능을 제공하면서도 확장을 위한 틀을 제공하는 반면, 인터페이스는 구현을 강제하여 일관된 동작을 보장합니다.
728x90
반응형
'Java' 카테고리의 다른 글
Java 패키지와 접근 제어자: 코드의 조직화와 보안 (38) | 2024.02.19 |
---|---|
Java 예외 처리: 안정적인 애플리케이션 구축을 위한 필수 요소 (32) | 2024.02.19 |
Java 상속과 다형성: 객체 지향 프로그래밍의 핵심 (33) | 2024.02.18 |
Java 클래스와 객체: 객체 지향 프로그래밍의 기초 (35) | 2024.02.18 |
Java 객체 지향 프로그래밍 (OOP): 핵심 개념과 원리 (29) | 2024.02.17 |