[Java] 캡슐화 & 접근 제어자

정석·2024년 1월 4일

Java

목록 보기
23/39
post-thumbnail

김영한의 자바 강의를 통해 학습한 내용임.

캡슐화란?

  • 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말함.
  • 속성과 기능을 하나로 묶고, 외부에는 꼭 필요한 기능만 노출하고 나머지는 숨김.

그럼 어떤 걸 숨겨야 할까?

  • 데이터
  • 기능 (외부에서 필요한 것만 오픈)
    모든 걸 숨겨라!

숨겨야 하는 이유는?

  • 객체 내부의 데이터를 사용자가 바꿀 수 있게 한다면 프로그램이 달라지기 때문
  • 그래서 각자 가지고 있는 속성에 대한 계산은 각자의 클래스 안에서 메서드 형식으로 구하는 방식을 지향.

숨기는 방법 -> 접근을 제어하는 '접근 제어자'

  • 접근 제어자를 통해 사용자들의 접근을 막도록한다.
    1. public ▶︎ 어디에서든 접근 가능
    2. default ▶︎ 같은 패키지 안에서만 접근 가능
    3. private ▶︎ 존재하고 있는 클래스 안에서만 접근 가능

회원 장바구니 예제

  • 상품 클래스
package access.ex;

public class Item {
    private String name;
    private int price;
    private int quantity;

    public Item(String name, int price, int quantity){
        this.name = name;
        this.price = price;
        this.quantity = quantity;
    }

    public String getItem(){
        return name;
    }

    public int getTotalPrice(){
        return price * quantity;
    }
}
  • 예제의 일부인 상품 클래스에 대해서 보면, 상품 이름과 가격, 수량 부분은 접근 제어를 통해 숨겼음을 알 수 있다. 하지만 이 속성 값들을 이용해 계산이 필요한 부분은 외부에서도 사용해야하기에 public 제어자를 통해 외부 접근을 허용하였다.

0개의 댓글