2026년 02월 14일

🧱 객체 지향 프로그래밍(OOP) — Java로 현실을 코드로 옮기다

Java Spring Boot
Cover Image

🧱 객체 지향 프로그래밍(OOP) — Java로 현실을 코드로 옮기다

핵심 아이디어 : 부품을 먼저 만들고, 조립해서 완성품을 만든다. 소프트웨어도 똑같다.


1️⃣ 객체(Object)란?

현실 세계에서 다른 것과 구별할 수 있는 모든 것이 객체다.

물리적 객체  →  자동차, 사람, 책
개념적 객체  →  주문, 강의, 학과

객체는 속성동작으로 구성된다.

현실 세계Java
속성 (이름, 색상, 나이)필드 (field)
동작 (달린다, 멈춘다)메서드 (method)

현실의 객체를 필드와 메서드로 정의하는 과정을 객체 모델링(Object Modeling) 이라 한다.


2️⃣ 객체는 메서드로 대화한다

객체들은 메서드 호출을 통해 서로 데이터를 주고받는다.

int result = add(10, 20);  // 10, 20을 전달 → 결과를 반환받아 저장
호출한 쪽  →  매개값(Argument) 전달  →  메서드 실행
호출한 쪽  ←  리턴값(Return) 수신   ←  메서드 종료

3️⃣ 객체 간의 3가지 관계

관계설명예시
집합완성품 ↔ 부품자동차 — 엔진, 타이어
사용다른 객체의 메서드를 호출사람 → 자동차.달린다()
상속부모의 특성을 자식이 물려받음기계(부모) → 자동차(자식)

4️⃣ OOP의 3대 특징

🔒 캡슐화 (Encapsulation)

데이터(필드)와 동작(메서드)을 하나로 묶고, 내부 구현을 외부에 숨긴다.

외부 객체  →  공개된 메서드만 접근 가능
           →  내부 필드 직접 접근 불가

Java에서는 접근 제한자(Access Modifier) 로 노출 범위를 제어한다.
외부의 잘못된 사용으로부터 객체를 보호하는 것이 목적이다.


🧬 상속 (Inheritance)

부모 객체의 필드와 메서드를 자식 객체가 그대로 물려받는다.

기계 (부모)
 └── 자동차 (자식)  ← 기계의 필드·메서드를 그대로 사용 가능

상속의 2가지 이점


🎭 다형성 (Polymorphism)

사용 방법은 같지만, 실행 결과가 다양하게 나오는 성질이다.

drive(Car car)  ←  일반 자동차 전달 → 일반 주행
drive(Car car)  ←  스포츠카 전달   → 고성능 주행

같은 메서드 호출이지만 어떤 객체를 넣느냐에 따라 결과가 달라진다.
다형성은 상속인터페이스 구현을 통해 얻어진다.


📌 핵심 요약

객체      =  필드(속성) + 메서드(동작)
OOP       =  객체를 만들고 → 조립해서 → 프로그램 완성
캡슐화    =  내부를 숨기고 필요한 것만 공개
상속      =  부모의 것을 자식이 물려받아 재사용
다형성    =  같은 방법으로 호출, 다른 결과
← 목록으로 돌아가기