728x90
반응형

캡슐화 (Encapsulation)

연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것이다.
캡슐화는 중요한 데이터를 쉽게 바꾸지 못하도록 할 때 사용한다.

 

캡슐화를 하는 가장 큰 이유는 정보 은닉에 있다.
캡슐화를 통해 외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막고
객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다.

 

이렇게 접근을 제한함으로써 유지보수나 확장 시 오류의 범위를 최소화할 수 있고
객체 내의 정보 손상과 오용을 방지하고 데이터가 변경되어도 다른 객체에 영향을 주지 않아 독립성이 좋다.

 

캡슐화는 접근제어자를 통해 이루어진다.

* 자바의 접근 제어자
public : 접근 제한 없음
protected: 동일한 패키지 내에 존재하거나 파생 클래스에서만 접근 가능
default : 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근 가능
private: 자기 자신의 클래스 내에서만 접근 가능

캡슐화에 대한 이해를 돕기 위해 간단한 클래스 하나를 만들어봤다.
보통 클래스 내의 변수에 접근하기 위해서 getter/setter 라는 메소드를 통해 접근했었던 기억이 난다.

 

[캡슐화 예제 클래스]

package com.encapsulationExample;

public class EncapsulationClass {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

 

[메인 클래스]

package com.encapsulationExample;

public class Main {

    public static void main(String[] args) {
	// write your code here
        EncapsulationClass cap = new EncapsulationClass();

        cap.setId(123);
        cap.setName("jay");

        System.out.println(cap.getId());
        System.out.println(cap.getName());
    }
}

 

[출력 결과]

123
jay

 

 

위의 예제를 보면 private 접근제어자를 통해 변수를 선언해주었기 때문에 외부에서 접근할 수 없다.
그래서 getter/setter 메소드를 통해 변수에 값을 저장해주고 가져올 수 있게 해준다.

 

 

- 참고 사이트 - 

https://radait.tistory.com/5

 

자바[Java] 캡슐화[Encapsulation]란? 무엇인가?

캡슐화는 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는게 핵심입니다. 객체에 직접적인 접근을 막고 외부에서 내부의 정보에 직

radait.tistory.com

 

728x90
반응형
복사했습니다!