Abstract class(=추상화)

2025. 11. 28. 14:19·java

# 추상화란?

시스템에서 중요한 개념만 노출시키고 세부 구현은 감추는 객체지향 기법이다.

실무에서는 서비스, API, 모듈화 시스템에서 많이 사용한다.

특징

일반 메서드 + 추상 메서드 동시 사용 가능
하위 클래스는 추상 메서드 반드시 구현 (강제 구현)
new 연산자 사용 불가
abstract 키워드 사용

 

예제: 데이터베이스 트랜잭션 처리

public abstract class Authenticator {
    // 인증 방식별로 구현
    protected abstract boolean validateCredentials(String name, String password);

    public void login(String name, String password) {
        if(validateCredentials(name, password)) {
            System.out.println(name + " 로그인 성공");
        } else {
            System.out.println(name + " 로그인 실패");
        }
    }
}
OAuth, JWT, Session 등 방식이 다르더라도 공통 로그인 프로세스는 추상 클래스에 구현
세부 구현은 하위 클래스에서 정의

# Template Method Pattern

알고리즘의 골격을 상위 클래스에서 정의하고

일부 세부 단계는 하위 클래스에서 구현하도록 하는 디자인 패턴

특징

공통 단계는 상위 클래스에서 구현
가변적 단계는 추상 메서드로 선언 → 하위 클래스에서 구현 강제
실행 순서 변경 불가 → final 메소드로 구현 가능

 

예제: 데이터베이스 트랜잭션 처리

public abstract class DatabaseTransaction {
    public final void executeTransaction() {
        beginTransaction();
        try {
            doOperation(); // 세부 구현은 하위 클래스에서
            commitTransaction();
        } catch (Exception e) {
            rollbackTransaction();
            e.printStackTrace();
        }
        endTransaction();
    }

    private void beginTransaction() {}
    private void commitTransaction() {}
    private void rollbackTransaction() { System.out.println("Error...."); }
    private void endTransaction() {}

    protected abstract void doOperation() throws Exception;
}

class OrderTransaction extends DatabaseTransaction {
    private boolean isOK = false;

    @Override
    protected void doOperation() throws Exception {
        if (isOK) System.out.println("Operation End");
        else throw new Exception("DB Error");
    }
}

class Main {
    public static void main(String[] args) {
        var transaction = new OrderTransaction();
        transaction.executeTransaction();
    }
}
executeTransaction(): 공통 트랜잭션 단계 정의 (begin, commit, rollback, end)
doOperation(): 하위 클래스에서 DB 작업 구체화
장점: 공통 로직 변경 시, 하위 클래스에 영향 최소화 → 유지보수 용이

개념 특징 예
추상화 중요한 개념만 노출,
세부 구현 감춤
Authenticator, validateCredentials()
Template Method Pattern 알고리즘 구조 정의,
일부 구현은 하위 클래스에 위임
DatabaseTransaction.executeTransaction()
장점 공통 로직 재사용, 세부 구현 자유,
유지보수 용이
트랜잭션 처리, 인증, 알림 시스템 등

'java' 카테고리의 다른 글

Lambda Expression(=람다식)  (0) 2025.11.28
Generic Type(=제네릭 타입)  (0) 2025.11.28
Encapsulation(=캡슐화)  (0) 2025.11.28
Java 문법 – Overload vs Override  (0) 2025.11.28
Java 문법 – 변수, 메서드, 다형성, CallByValue/Reference  (0) 2025.11.28
'java' 카테고리의 다른 글
  • Lambda Expression(=람다식)
  • Generic Type(=제네릭 타입)
  • Encapsulation(=캡슐화)
  • Java 문법 – Overload vs Override
차하비
차하비
chadev 님의 블로그 입니다.
  • 차하비
    chadev
    차하비
  • 전체
    오늘
    어제
    • 분류 전체보기 (47)
      • kubernetes, k8s (3)
      • docker (3)
      • cloud (6)
      • linux (12)
      • spring (7)
      • java (11)
      • error (4)
      • 자격증 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    docker
    k8s
    KUBECTL
    thread
    restAPI
    Join
    비트 연산
    OOP
    Kubernetes
    모놀리식
    HTTP
    클래스
    url
    URI
    진법
    객체지향
    Spring
    monolithic
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
차하비
Abstract class(=추상화)
상단으로

티스토리툴바