본문 바로가기
  • Let's study
알고리즘/Java

[Java] 캡슐화(Encapsulation)

by 코딩고수이고파 2026. 7. 15.

캡슐화(Encapsulation)는 객체의 데이터를 외부에서 직접 접근하지 못하도록 보호하고, 메서드를 통해서만 접근하도록 하는 객체지향의 핵심 개념이다.

객체가 올바르게 동작하려면 데이터가 올바른 값으로 유지되어야 한다. 따라서 인스턴스 변수는 private으로 보호하고, 필요한 경우에만 메서드를 통해 접근하도록 한다.

private과 public

private

private은 같은 클래스 내부에서만 접근할 수 있는 접근 제어자이다.

외부에서는 직접 접근할 수 없으므로 객체의 데이터를 안전하게 보호할 수 있다.

 

class 사람 {
    private int 나이;
    private String 이름;
}

public

public은 어디서든 접근 가능한 접근 제어자이다.

외부에서 사용할 메서드는 보통 public으로 선언한다.

 

public void 자기소개() {
    System.out.println("안녕하세요.");
}

데이터 보호

값을 변경할 때 메서드를 사용하면 잘못된 값이 저장되는 것을 방지할 수 있다.

 

public void 나이세팅(int 입력나이) {

    if (입력나이 < 0) {
        System.out.println("나이는 음수가 될 수 없습니다.");
        return;
    }

    나이 = 입력나이;
}
 

이처럼 값을 검증한 후 저장하면 객체가 항상 올바른 상태를 유지할 수 있다.

Getter와 Setter

자바에서는 인스턴스 변수를 private으로 선언하고 Getter와 Setter를 사용하는 것이 일반적인 관례이다.

  • Getter : 값을 조회하는 메서드
  • Setter : 값을 변경하는 메서드
public int get나이() {
    return 나이;
}

public void set나이(int 나이) {
    this.나이 = 나이;
}
 

IDE에서는 Getter와 Setter를 자동으로 생성할 수 있다.

  • Windows : Alt + Insert
  • Mac : Control + Enter

생성자(Constructor)

객체는 필요한 값이 모두 초기화되어야 정상적으로 동작한다.

생성자(Constructor)는 객체가 생성될 때 필요한 값을 초기화하는 메서드이다.

클래스 이름과 동일하고 반환 타입(Return Type)이 없다. 객체 생성 시 자동으로 호출된다.

 

사람(int 나이, String 이름, String 거주지) {
    this.나이 = 나이;
    this.이름 = 이름;
    this.거주지 = 거주지;
}
 

객체를 생성하면서 필요한 값을 한 번에 전달할 수 있다.

 

사람 person = new 사람(20, "홍길동", "서울");
 

생성자를 사용하면 객체 생성 후 Setter를 여러 번 호출하지 않아도 되며, 필수 값이 누락되는 것을 방지할 수 있다.

'알고리즘 > Java' 카테고리의 다른 글

[Java] 명언 게시판 만들기(1~5단계) - 리팩토링  (0) 2026.07.16
[Java] 명언 게시판 만들기(1~5단계)  (0) 2026.07.16
[Java] 추상 클래스 / 추상 메서드  (0) 2026.07.15
[Java] 구성  (0) 2026.07.15
[Java] 상속  (0) 2026.07.14

댓글