java
22. 캡슐화
dalc3154
2025. 2. 25. 17:10
캡슐화(Encapsulation)
OOP (Object-Oriented Programming - 객체지향적프로그래밍)에서 데이터와 해당 데이터를 처리하는 메소드(함수)를 하나로 묶는 것
객체 내부의 구현을 숨기고, 외부에서는 제공된 메소드를 통해서만 접근하도록 설정한다
데이터를 보호하고, 유지보수성을 향상하며, 사용자 편의성을 증대시킨다
getter와 setter 메소드
캡슐화 된 데이터에 안전하게 접근하고 수정할 수 있도록 하는 기능
데이터의 무결성을 유지하고 정보를 은닉함
private 사용하기데이터 보호/ 유지보수성 향상을 위해 데이터 필드(속성)은 private로 선언한다데이터에 접근하거나 수정할때는 getter & setter를 사용한다
getter: 객체의 특정 필드 값을 가져오는(읽는) 메소드
get필드명();
setter: 객체의 특정 필드 값을 설정(변경)하는 메소드
set<필드명>();
예시)
// 학생 정보 관리 클래스
class Student{
private String name;
private int residentNumber;// 주민등록번호
private int age;
private int score;
public void setResidentNumber(int number) {
this.residentNumber = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
// 단순한 데이터 반환 뿐만 아니라, 데이터 가공 역할을 담당하기도 함
if(age > 19) {
return "성인입니다";
} else {
return "미성년자입니다";
}
}
public void setAge(int age) {
if(age < 0) {
System.out.println("유효하지 않은 나이입니다");
} else {
this.age = age;// 데이터의 무결성 유지(유효성 검사)
}
}
public int getScore() {
return score;
}
public void setScore(int score) {
if(score >= 0 && score <= 100) {
this.score = score;
} else {
System.out.println("유효하지 않은 점수입니다");
}
}
}
public class B_Encapsulation {
public static void main(String[] args) {
Student student = new Student();
// student.name = "이승아";
student.setName("이승아");
student.setAge(29);
student.setAge(-29);// 유효하지 않은 나이입니다
student.setResidentNumber(1234567);
student.setScore(101);// 유효하지 않은 점수입니다
student.setScore(100);
student.setResidentNumber(9999999);
// 데이터의 불변성이 지켜지지 않음
// >> final 키워드
}
}
##_(언더바)와 -(하이픈)의 구별
언더바는 가독성을 위한 단어의 구분으로 1개의 단어로 취급한다
하이픈은 각 단어의 구분으로 2개의 단어로 취급한다