캡슐화

sungs·2025년 5월 15일

자바

목록 보기
2/95

캡슐화

캡슐화란, 객체의 필드(변수)를 외부에서 직접 접근하지 못하도록 막고, 메서드를 통해서만 접근할 수 있도록 제한하는 것.

사용하는 이유

이유설명
🔐 데이터 보호외부에서 직접 필드에 접근하면 잘못된 값이 들어갈 수 있으므로, 이를 막기 위해
🔁 유지보수 용이내부 로직이 바뀌어도 외부에 영향 없이 메서드만 유지하면 됨
✅ 유효성 검사 가능값을 설정할 때 조건문으로 검증 가능
📦 코드 일관성 유지객체 내부의 상태를 일관성 있게 유지할 수 있음

✅ 캡슐화 구현 방법 (자바 기준)

  1. 필드를 private으로 선언

  2. public getter/setter 메서드로만 접근 허용

public class Student {
    private String name;
    private int score;

    // setter: 값 설정 시 유효성 검사 포함
    public void setScore(int score) {
        if (score >= 0 && score <= 100) {
            this.score = score;
        }
    }

    // getter
    public int getScore() {
        return this.score;
    }

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

    public String getName() {
        return this.name;
    }
}
public class Main {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("Alice");
        s.setScore(-10); // 유효하지 않으므로 무시됨
        System.out.println(s.getName() + "의 점수는 " + s.getScore());
    }
}

🔍 캡슐화를 안 하면 어떤 문제가 생길까?

public class Student {
    public int score;
}
Student s = new Student();
s.score = -100; // ❌ 유효하지 않은 값도 넣을 수 있음
  • 외부에서 마음대로 필드 값을 변경할 수 있음

  • 잘못된 값으로 인해 프로그램 전체의 상태가 망가질 위험이 큼

✅ 캡슐화의 핵심 요약

  1. 객체의 내부 상태를 숨기고, 메서드를 통해 제어한다

  2. 데이터 보호 + 유효성 검사 + 유지보수성 향상

  3. 자바에서 객체지향의 가장 기본이자 중요한 설계 방식!

✍️ 마무리

캡슐화는 단순히 "필드를 private으로 만들자"가 아니다.
객체가 스스로 데이터를 안전하게 관리할 수 있도록 하는 설계 철학.
복잡한 프로젝트일수록 캡슐화는 코드의 안정성과 유지보수를 좌우할 수 있다.

profile
앱 개발 공부 중

0개의 댓글