< 캡슐화 (Encapsulation) >
- 직접적으로 접근해서 값을 대입하고 조회할 경우, 보안 문제 발생 가능
(외부로부터 직접 접근이 가능하기 때문에 값이 변질되거나 조회를 막지 못하는 문제 발생)
- 객체지향의 설계 원칙 중 하나인 "정보 은닉"을 위한 기술
- 정보보안의 3요소 : (기밀성, 무결성), 가용성
'캡슐화'와 관련
[ 작업 방법 ]
1단계. 값을 숨김 : 접근제한자를 public 대신 private으로 바꿔준다.
2단계. 간접적으로 값을 처리할 수 있는 메소드를 만든다. (getter/setter)
< setter 메소드 >
- 데이터를 기록 및 수정하는 기능의 메소드
- '필드의 자료형'과 '매개변수의 자료형'이 동일한지 확인해야 함!
[ 규칙 ]
1. setter 메소드는 접근 가능하도록 만들어야 하기 때문에 public 접근제한자를 이용
2. 'set필드명'으로 이름을 짓되, 낙타봉표기법(camelCase) 사용
ex) setName() , setAge(), setGender()
3. 모든 필드에 대해 전부 다 필수로 작성
< getter 메소드 >
- 데이터를 반환해주는 기능의 메소드
- '메소드의 반환형'과 '반환값의 반환형'이 동일한지 확인해야함!
[ 규칙 ]
1. getter 메소드는 접근제한자 public을 이용
2. 'get필드명'으로 이름을 짓되, 낙타봉표기법(camelCase) 사용
ex) getName() , getAge(), getGender()
3. 모든 필드에 대해 전부 다 필수로 작성
public class Student {
// [ 필드부 ]
private String name;
private char gender;
private int age;
// [ setter ]
// 이름을 기록 및 수정할 수 있는 메소드
public void setName(String name) {
this.name = name; // this : heap영역에 생긴 공간의 주소값에 접근하도록 해줌
// 특정 영역 안에서는 해당 영역 안의 지역변수가 우선함.
// this.를 붙이지 않으면 매개변수 name으로 인식함
}
// 나이를 기록 및 수정할 수 있는 메소드
public void setAge(int age) {
if (age < 0) { // 내부에 조건문 작성 가능
System.out.println("잘못된 값입니다. ");
} else {
this.age = age;
}
}
// 성별을 기록 및 수정할 수 있는 메소드
public void setGender(char gender) { // 매개변수명은 보편적으로 같은 이름으로 지어줌
this.gender = gender;
}
// [ getter ]
// 이름을 반환해주는 메소드
public String getName() {
return name;
}
// 나이를 반환해주는 메소드
public int getAge() {
return age;
}
// 성별을 반환해주는 메소드
public char getGender() {
return gender;
}
}
'개발 > Java' 카테고리의 다른 글
[Java] 자바 - 클래스 / 클래스 구조 - 필드, 생성자, 메소드 / 접근제한자 / 객체지향 프로그래밍 (0) | 2022.09.13 |
---|---|
[Java] 자바 - 전역변수 - 클래스 변수(static변수) / 지역변수 / 상수 필드 (1) | 2022.09.13 |
[Java] 자바 - 배열 / 배열 복사 (0) | 2022.09.07 |
[Java] 자바 - equals() (참조자료형 String) (0) | 2022.09.07 |
[Java] 자바 - break / continue (무한반복문) (1) | 2022.09.07 |