일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- token filter test
- flask
- docker
- Kafka
- aggs
- Test
- 파이썬
- matplotlib
- zip 파일 암호화
- sort
- aggregation
- Java
- Elasticsearch
- high level client
- 900gle
- springboot
- licence delete curl
- license delete
- Python
- ELASTIC
- API
- TensorFlow
- analyzer test
- License
- MySQL
- 차트
- plugin
- query
- Mac
- zip 암호화
Archives
- Today
- Total
개발잡부
[java] 은닉화 Encapsulation 본문
반응형
**은닉화(Encapsulation)**는 객체 지향 프로그래밍(OOP)의 중요한 원칙 중 하나로, 객체의 상태(데이터)를 외부에서 직접 접근하거나 수정하지 못하도록 감추고(캡슐화), 대신 메소드를 통해 접근할 수 있도록 하는 개념입니다. 이를 통해 객체의 내부 구현을 숨기고, 외부에는 필요한 기능만 제공하는 구조를 만듭니다.
은닉화의 핵심 개념
- 데이터 보호: 객체의 내부 데이터를 외부에서 직접 접근하지 못하도록 private 접근 제어자를 사용하여 데이터를 보호합니다.
- 공용 메소드 제공: 객체의 내부 데이터에 접근하거나 수정하려면 getter와 setter 메소드를 사용해야 하며, 이를 통해 제어가 가능합니다.
은닉화의 특징
- 정보 숨기기: 객체의 상태를 외부로부터 숨겨, 외부에서 직접적으로 접근하거나 수정할 수 없게 만듭니다.
- 유효성 검사: 데이터를 설정할 때 유효성 검사를 하거나, 부적절한 값이 들어오는 것을 방지할 수 있습니다.
- 유지보수 용이성: 데이터가 내부적으로 변경되더라도, 외부에는 그 변경이 영향을 미치지 않도록 보호할 수 있습니다.
은닉화 구현 방법
- private 접근 제어자: 객체의 데이터 멤버를 private로 선언하여 외부에서 직접 접근할 수 없게 합니다.
- getter와 setter 메소드: private 변수에 접근하거나 수정하기 위해 메소드를 제공합니다.
public class Person {
// 데이터 은닉화: 멤버 변수는 private로 선언
private String name;
private int age;
// getter 메소드: private 멤버 변수에 접근할 수 있도록 공개된 메소드
public String getName() {
return name;
}
// setter 메소드: private 멤버 변수 값을 설정하는 공개된 메소드
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;
} else {
System.out.println("Age must be positive.");
}
}
}
장점
- 데이터 보호: 객체의 내부 상태가 잘못 변경되는 것을 방지하여 데이터 일관성을 유지할 수 있습니다.
- 유효성 검사 가능: 데이터를 설정할 때 유효성 검사를 추가할 수 있어, 잘못된 값이 객체에 설정되는 것을 방지할 수 있습니다.
- 유지보수 용이: 내부 구현을 변경해도 외부에 영향을 미치지 않으므로 코드 수정이 용이해집니다.
- 복잡성 감소: 외부에서는 객체의 내부 구현을 몰라도 필요한 메소드만을 사용하여 기능을 구현할 수 있습니다.
결론
은닉화는 객체의 내부 상태를 보호하고, 불필요한 세부 사항을 숨기며, 공개된 메소드를 통해 필요한 기능만을 제공함으로써 코드의 안정성과 유지보수성을 높여주는 중요한 개념입니다.
반응형
'JAVA' 카테고리의 다른 글
[java] 다형성 Polymorphism (0) | 2025.05.14 |
---|---|
[java] 추상화 Abstraction (0) | 2025.05.14 |
[java] 10진수 를 2진수, 8진수, 16진수로 변환하기 (0) | 2023.05.15 |
[java] Spark java tutorial (0) | 2022.06.05 |
Error querying database (0) | 2022.04.25 |