자바에서 캡슐화(Encapsulation)는 객체 지향 프로그래밍(OOP)의 기본 원리 중 하나로, 클래스의 상태(속성)를 보호하고 외부에서 직접 접근하지 못하도록 하는 메커니즘입니다. 캡슐화는 데이터 은닉(Data Hiding)이라고도 불립니다.
캡슐화의 주요 개념 및 원리
1. 접근 제어 지시자 (Access Modifiers)
자바에서는 다음과 같은 네 가지 주요 접근 제어 지시자를 사용하여 클래스의 멤버(필드 및 메서드)에 대한 접근 권한을 제어합니다.
- public : 어떤 클래스에서든 접근 가능
- protected : 같은 패키지 내의 클래스 및 하위 클래스에서만 접근 가능
- default (package-private) : 같은 패키지 내에서만 접근 가능 (접근 제어 지시자를 명시하지 않은 경우 기본값)
- private : 해당 클래스 내에서만 접근 가능
2. getter 및 setter 메서드
캡슐화를 통해 클래스의 속성에 접근하려면 getter(읽기) 및 setter(쓰기) 메서드를 사용해야 합니다. 이러한 메서드는 속성 값을 가져오거나 설정할 때 중요한 역할을 합니다.
3. 데이터 은닉
클래스 내의 속성은 일반적으로 private로 선언되어 외부에서 직접 접근할 수 없습니다. 이렇게 함으로써 데이터의 무결성을 보장하고 잘못된 수정을 방지할 수 있습니다.
4. 접근자 (Accessor) 메서드
getter 메서드는 속성 값을 반환하는 메서드입니다. 이 메서드를 사용하여 속성 값을 읽을 수 있습니다.
5. 수정자 (Mutator) 메서드
setter 메서드는 속성 값을 설정하는 메서드입니다. 이 메서드를 사용하여 속성 값을 변경할 수 있습니다.
예시
public class Student {
private String name;
private int age;
// getter 메서드 (읽기)
public String getName() {
return name;
}
// setter 메서드 (쓰기)
public void setName(String name) {
this.name = name;
}
// getter 메서드 (읽기)
public int getAge() {
return age;
}
// setter 메서드 (쓰기)
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.setName("Alice");
student.setAge(25);
System.out.println("Name: " + student.getName());
System.out.println("Age: " + student.getAge());
}
}
이 예시에서 Student 클래스의 name 및 age 속성은 private로 선언되어 직접 접근할 수 없습니다. 대신, getName 및 setName, 그리고 getAge 및 setAge 메서드를 사용하여 속성 값을 읽고 쓸 수 있습니다. 이렇게 하면 데이터의 일관성과 보안이 유지되며, 코드의 유지 보수 및 디버깅이 용이해집니다.
캡슐화는 객체 지향 프로그래밍에서 중요한 원리 중 하나이며, 클래스 및 객체의 내부 상태를 효과적으로 관리하고 제어할 수 있도록 도와줍니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 다형성 (Polymorphism) (0) | 2023.11.05 |
---|---|
자바 상속 (Inheritance) (0) | 2023.11.05 |
자바 클래스와 객체 (0) | 2023.11.05 |
자바 객체지향언어 (0) | 2023.11.05 |
자바 객체지향언어의 역사 (0) | 2023.11.05 |