// education

상속(Inheritance), 다형성, 추상 클래스 및 인터페이스

부모 클래스의 속성과 메소드를 재사용 확장하는 **상속(Inheritance)**과 상위 타입 변수로 여러 하위 객체를 다루는 다형성(Polymorphism), **인터페이스(Interface)**를 학습합니다.


1. OOP 심화 용어 사전 (Glossary)


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. 기존 인터페이스에 새 메소드를 추가하면 이미 구현된 모든 클래스를 수정해야 하는 불편을 막기 위해, 인터페이스 내부에서도 몸체({ ... })를 가지는 기본 메소드를 선언할 수 있게 만든 기능입니다.

← 이전객체지향 프로그래밍 기초: 클래스, 객체, 메소드 다음 →패키지, 모듈 시스템과 자바 기본 패키지 (java.lang)