클래스 이해하기

기훈·2025년 6월 23일

Java

목록 보기
5/6

클래스 기반 언어로 개발을 진행하면서 클래스를 이해하기 위해 사용했던 비유들을 정리한다.


클래스와 객체

개념비유 설명
클래스 (Class)자동차 설계도 (도면, 제작 방법)
객체 (Object)설계도로부터 조립되어 만들어진 실제 자동차

메서드와 변수

개념비유 설명
변수 (Field)자동차의 상태 (속도, 연료량 등)
메서드 (Method)자동차가 할 수 있는 행위 (운전, 브레이크 등)

접근 제한자 (Access Modifiers)

제한자의미비유 설명
private클래스 내부에서만 접근 가능자동차 내부의 비밀 설정값 (예: ECU 설정)
protected같은 패키지 또는 하위 클래스에서만 접근 가능같은 브랜드의 자동차끼리 공유하는 내부 기능
public누구나 접근 가능운전자가 사용하는 기능 (예: 브레이크, 라이트)
(default)같은 패키지 내에서만 접근 가능같은 부서에서만 열람 가능한 설계도

static

개념비유 설명
static 변수모든 자동차가 공유하는 공용 표준값
예: 공인 타이어 사이즈
static 메서드자동차를 만들기 전에, 설계도에 정의된 도구로 미리 작업할 수 있는 기능
예: 설계도만으로 최대 속도 계산, 자동차 번호판 포맷 생성 등
static 클래스자동차와 무관하게 작동 가능한 독립 유틸리티 도구함
예: 범용 계산기 모음, 형식 변환 도구 등

내부 클래스 (Inner Class)

개념비유 설명
일반 내부 클래스자동차 안에 포함된 하위 부품 (예: 오디오 시스템, 내비게이션)
정적 내부 클래스 (static nested class)자동차 없이도 쓸 수 있는 독립 부품 설계도 (예: 범용 배터리 설계도)

private 생성자와 static factory method

개념비유 설명
private 생성자외부에선 자동차를 직접 조립할 수 없고, 공장 내부에서만 조립 가능
static factory method설계도가 제공하는 공식 조립 절차 (예: createElectricCar()로 전기차 생산 요청)

우리는 직접 생성자 호출로 객체를 만들지 않고,
설계도에 정의된 공식 조립 절차(static factory method)를 통해 객체를 생성한다.
이 절차는 내부 로직을 감추고 캡슐화를 강화한다.


생성자 주입과 private final

개념비유 설명
private final Engine engine;외부에서 조달한 부품을 조립 시 단 한 번 넣고, 이후에는 변경 불가한 고정 엔진 부품

패키지 (Package)

개념비유 설명
패키지관련 설계도를 모아둔 기능별 폴더 (예: engine 패키지 = 엔진 관련 설계도 모음)

추상 클래스와 인터페이스

개념비유 설명
추상 클래스 (Abstract Class)여러 자동차 설계도가 공유하는 공통 기능이 담긴 기본 설계도
인터페이스 (Interface)행동 명세서 (행동이 정의되어 있고, 구현은 각 설계도에서 수행)

추상 클래스는 일부 구현을 제공하지만, 인터페이스는 구현 없이 규칙만 정한다.
다양한 자동차 설계도가 각자 방식대로 이 규칙을 구현해야 한다.


객체지향의 핵심 네 가지 개념 요약

개념자동차 비유
캡슐화자동차 내부 설계(엔진, 회로 등)는 숨기고, 운전자는 버튼만 누르면 작동
상속전기차가 일반 자동차 설계도를 상속받고, 배터리 같은 추가 기능을 덧붙임
다형성"운전 가능"이라는 역할(인터페이스)은 같지만, 휘발유차, 전기차, 자율주행차 등은 각기 다른 방식으로 그 역할을 수행함
추상화"운전 가능"이라는 기능만 정의하고, 실제 운전 방식은 설계도(구현체)에 따라 다르게 구성됨

0개의 댓글