[JAVA] 데이터 추상화 vs 제어 추상화

2025. 10. 9. 17:01·Java

“추상화”라는 단어는 어렵게 들리지만, 사실 우리가 매일 쓰는 객체지향의 핵심 개념 중 하나입니다.
자바에서 추상화는 복잡한 세부사항을 숨기고 필요한 정보만 노출하는 것을 의미합니다.
이번 글에서는 데이터 추상화와 제어 추상화의 차이, 그리고 자바에서 이들이 어떻게 구현되는지를 살펴보겠습니다.

 


추상화란 무엇인가?

  • 복잡한 현실 세계를 단순화해서 모델링하는 과정
  • “무엇을 한다”와 “어떻게 한다”를 분리하는 것
  • 자바에서는 클래스, 인터페이스, 접근제어자를 통해 표현됨
abstract class Animal {
    abstract void makeSound();
}

데이터 추상화 (Data Abstraction)

데이터의 내부 구조를 숨기고, 필요한 정보만 외부에 노출하는 방식

  • 주로 캡슐화(encapsulation) 와 함께 사용됨
  • private 필드와 getter/setter 메서드로 구현
class User {
    private String name;

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

👉 외부는 내부 필드를 직접 조작할 수 없고,
getName() / setName()을 통해서만 접근 가능 → 데이터 추상화 실현


제어 추상화 (Control Abstraction)

“무엇을 해야 하는가”만 정의하고, “어떻게 할 것인가”는 숨기는 것

  • 주로 추상 클래스나 인터페이스로 구현됨
  • 공통된 동작을 정의하되, 실제 구현은 하위 클래스가 담당
interface Vehicle {
    void move();
}

class Car implements Vehicle {
    public void move() {
        System.out.println("도로를 달립니다.");
    }
}

class Airplane implements Vehicle {
    public void move() {
        System.out.println("하늘을 납니다!");
    }
}

데이터 추상화 vs 제어 추상화 정리표

구분 초점 자바 구현 예시 설명

데이터 추상화 데이터 구조 숨김 클래스, 접근제한자 필드 접근 제한 및 메서드 제공
제어 추상화 동작의 방식 숨김 추상 클래스, 인터페이스 메서드 정의만, 구현은 하위 클래스에서

마무리

추상화는 결국 “복잡함을 줄이고 명확함을 높이는 기술”이다.
데이터 추상화로 객체의 내부를 감추고, 제어 추상화로 동작의 공통점을 정의함으로써
우리는 유연하고 확장 가능한 코드를 만들 수 있다!

 

'Java' 카테고리의 다른 글

[Java] 문자열 처리 성능비교 - String vs StringBuilder vs StringBuffer  (0) 2025.10.11
[Java] 자바의 추상 클래스 vs 인터페이스 완전 정복  (0) 2025.10.09
[Java] 객체지향개념I  (0) 2025.10.08
[Java] 클래스 메소드(static 메소드) vs 인스턴스 메소드  (0) 2025.10.03
[Java] 기본형 매개변수와 참조형 매개변수  (0) 2025.10.03
'Java' 카테고리의 다른 글
  • [Java] 문자열 처리 성능비교 - String vs StringBuilder vs StringBuffer
  • [Java] 자바의 추상 클래스 vs 인터페이스 완전 정복
  • [Java] 객체지향개념I
  • [Java] 클래스 메소드(static 메소드) vs 인스턴스 메소드
싹난 감자🥔🌱
싹난 감자🥔🌱
개발 블로그
  • 싹난 감자🥔🌱
    감자에 싹이나서 잎이나서
    싹난 감자🥔🌱
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • Spring (3)
      • Java (17)
      • LLM (1)
      • DevOps (4)
      • Algorithm (14)
        • 백준 (4)
        • 프로그래머스 (0)
        • 코드업 (10)
      • Computer Science (3)
        • Operating System (2)
        • Computer Architecture (1)
      • Trouble Shooting 🚀 (0)
      • 회고 & 성장기록 (1)
      • 설계 📐 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Java
    코딩테스트
    자바BufferedReader
    docker
    자바Scanner비교
    알고리즘입력
    BufferedReader
    2차원 배열
    자바 입력
    2진수
    구간합
    자바성능
    Scanner
    배포
    비트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
싹난 감자🥔🌱
[JAVA] 데이터 추상화 vs 제어 추상화
상단으로

티스토리툴바