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 메소드를 통해 변수에 값을 저장해주고 가져올 수 있게 해준다.
- 참고 사이트 -
728x90
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
MacOS m1 openjdk 설치하기 (0) | 2023.09.17 |
---|---|
Java 상속 관계 클래스 생성자 호출 순서 정리 (0) | 2021.07.23 |
Java 상속(inheritance) 기본 개념 정리 (1) | 2021.07.19 |
Java this 의미와 사용법 (2) | 2021.07.17 |
Java 가상 머신 (JVM, Java Virtual Machine) (0) | 2021.07.17 |