객체지향 언어에서는 캡슐화라는 말을 사용한다. 캡슐화란 무었일까.
이번 포스티에서는 자바에서 사용하는 캡슐화를 알아보자.
자바의 캡슐화 Encapsulation
객체지향 프로그래밍(OOP)의 개념 중 하나로, 데이터와 해당 데이터를 다루는 메서드들을 하나의 단위로 묶어 정보 은닉과 보안을 강화하는 개념을 자바의 캡슐화라고 한다. 캡슐화는 객체의 내부 상태를 외부로부터 감추고, 외부에서는 오직 공개된 메서드를 통해서만 내부 상태에 접근할 수 있도록 하는 것을 의미한다.
자바에서 캡슐화를 구현하는 방법은 주로 두 가지 요소를 활용하여 이루어진다.
private 접근 제한자
멤버 변수를 'private'으로 선언하여 클래스 외부에서 직접 접근할 수 없게 한다. 이로써 내부 데이터에 직접 접근하는 것을 막고, 데이터의 무결성과 보안을 보장할 수 있다.
public 메서드
'public' 접근 제한자로 선언된 메서드를 통해서만 멤버 변수에 접근하고 조작할 수 있도록 한다. 이 메서드들은 내부 데이터를 다루는 로직을 포함하여, 외부 사용자들은 이 메서드들을 통해 데이터에 간접적으로 접근할 수 있다.
다음은 캡슐화의 개념을 보다 구체적으로 보여주는 간단한 예시이다.
// 학생 클래스
public class Student {
private Integer id; // 식별자
private String name; // 이름
private Integer age; // 나이
// 생성자
public Student(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
/* getter */
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
/* setter */
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
// 출력 메서드
public String toString() {
return "id: " + this.id + ", name: " + this.name + ", age: " + this.age;
}
}
위의 예시에서 'Student' 클래스는 'id', 'name', 'age'라는 멤버변수를 가지고 있다. 이 멤버변수는 모두 'private'으로 선언되었다. 따라서 외부에서 조작이 불가능하다.
이 값들을 초기화하기 위한 생성자(Constructor)는 'public'으로 선언되었으며 각 변수를 조회할 수 있도록 getter 메서드들이 정의되어 있다. 또한 이름과 나이는 수정이 가능하도록 setter 메서드가 정의되어 있다.
이로써 변수에는 직접 접근이 불가능하지만 'public' 메서드를 만들어서 변수를 변경할 수 있도록 기능 제한을 둔 것이다.
이번 포스팅에서는 자바에서 사용하는 캡슐화에 대해서 알아보았다. 캡슐화는 코드의 모듈화와 재사용성을 증가시키며, 데이터의 일관성을 보장하고 보안을 유지하는 데 도움을 준다.
'쿤즈 Dev > Java' 카테고리의 다른 글
[Java] 내부에서 사용하는 this 키워드 (0) | 2023.09.09 |
---|---|
[Java] 멤버 변수 접근 메서드 Getter, Setter (0) | 2023.09.08 |
[Java] 자바의 정적(Static) 변수 사용하기 (0) | 2023.09.06 |
[Java] 문자열을 다루는 클래스 (String, StringBuffer, StringBuilder) (0) | 2023.09.05 |
[Java] 반복문 foreach 사용 방법 (0) | 2023.09.04 |
댓글