부모 클래스의 속성과 메소드를 재사용 확장하는 **상속(Inheritance)**과 상위 타입 변수로 여러 하위 객체를 다루는 다형성(Polymorphism), **인터페이스(Interface)**를 학습합니다.
1. OOP 심화 용어 사전 (Glossary)
- Inheritance (상속): 부모 클래스(Super Class)의 속성과 기능을 자식 클래스(Sub Class)가 물려받아 확장(
extends)하는 객체지향의 핵심 특징입니다. - Overriding (오버라이딩): 부모 클래스의 메소드를 자식 클래스에서 목적에 맞게 재정의하여 커스터마이징하는 기법입니다. (
@Override어노테이션) - Polymorphism (다형성): 부모 클래스/인터페이스 타입의 참조 변수 하나로 여러 다양한 자식 클래스 인스턴스들을 가리키고 통합 제어하는 성질입니다.
- Abstract Class (추상 클래스): 미완성 추상 메소드(
abstract method)를 포함하여 자식 클래스에서 반드시 오버라이딩을 강제하는 설계용 클래스입니다. - Interface (인터페이스): 모든 메소드가 기본적으로 추상 메소드로 이루어진 표준 명세서로, 자바에서 다중 구현(
implements)을 지원합니다.
2. 인터페이스와 다형성 통합 예제
// 1. 결제 표준 인터페이스
interface Payment {
void processPay(int amount);
}
// 2. 신용카드 결제 구현체
class CreditCardPay implements Payment {
@Override
public void processPay(int amount) {
System.out.println("[신용카드 결제 완료]: " + amount + "원 승인");
}
}
// 3. 카카오페이 결제 구현체
class KakaoPay implements Payment {
@Override
public void processPay(int amount) {
System.out.println("[카카오페이 결제 완료]: " + amount + "원 간편 결제");
}
}
// 4. 다형성 연동 실행 클래스
public class PaymentSystem {
public static void main(String[] args) {
// 다형성을 활용하여 인터페이스 타입 변수로 서로 다른 결제 수단 호출
Payment pay1 = new CreditCardPay();
Payment pay2 = new KakaoPay();
pay1.processPay(50000);
pay2.processPay(15000);
}
}
3. 추상 클래스 vs 인터페이스 비교표
| 비교 항목 | 추상 클래스 (Abstract Class) | 인터페이스 (Interface) |
|---|---|---|
| 선언 키워드 | abstract class |
interface |
| 상속 및 구현 | extends (단일 상속만 허용) |
implements (다중 구현 허용) |
| 변수 선언 | 일반 멤버 변수 선언 가능 | 상수만 가능 (public static final) |
| 설계 목적 | 연관된 클래스들의 공통 코드 상속/재사용 | 서로 다른 클래스 간의 기능 통일 표준 규격 |
4. 자주 묻는 질문 (Q&A)
Q. 자바 8 이후 인터페이스에 추가된 default 메소드란?
A. 기존 인터페이스에 새 메소드를 추가하면 이미 구현된 모든 클래스를 수정해야 하는 불편을 막기 위해, 인터페이스 내부에서도 몸체({ ... })를 가지는 기본 메소드를 선언할 수 있게 만든 기능입니다.