접근 제어 지시자 (Access modifier)
- 특정 대상에 대해, 클래스 외부로부터의 접근 권한을 부여하는 명령어
→ 대상 : 변수, 메서드, 함수, 클래스 등 대부분
// 예시
private int 변수;
접근 제어 지시자 | |
private | 같은 클래스 (java 파일) 내부에서만 접근 가능 |
default (기본값) | 같은 패키지 내부에서만 접근 가능 |
protected | 같은 패키지 내부에 있거나, 다른 패키지여도 상속 관계의 클래스일 때는 접근 가능 |
public | 같은 프로젝트 내라면 어디에서든지 접근 가능 |
# 외부에서 멤버변수의 값을 수정하지 못하게 하기
- 멤버변수에 접근 제어 지시자 'private' 할당
→ 메서드를 이용한 값 수정은 가능하지만, 멤버변수에 직접 값을 수정할 수는 없게 됨
1) 'private'이 할당된 변수에 대한 정보만 읽고 싶다면?
→ get() 메서드
2) 'private'이 할당된 변수에 대해 수정이 필요하다면?
→ set() 메서드
get() 메서드
- 'private'로 선언된 멤버변수(필드)에 대해 접근해서 값을 읽을 수 있는 메서드 (read-only)
- 반드시 'return' 키워드를 필요로 함
// 클래스 파일에서 get() 메서드 구현
public 반환자료형 get메서드명() {
return this.멤버변수;
}
- get() 메서드명에 대한 코딩 컨벤션
1) 변수가 boolean 타입일 때
: is + 변수명을 카멜 노테이션 표기법으로
ex) 변수명 : abc → 메서드명 : isAbc()
2) 그 외
: get + 변수명을 카멜 노테이션 표기법으로
ex) 변수명 : abc → 메서드명 : getAbc()
set() 메서드
- 'private'로 선언된 멤버변수(필드)에 대해 값을 수정할 수 있는 메서드
- 기본적으로 'return' 키워드를 필요로 하지 않음 (반환 자료형이 없음)
→ 방어적 코드 작성에는 활용할 수 있음 (메서드를 종료시키는 용도)
// 클래스 파일에서 set() 메서드 구현
public void set메서드명(자료형 매개변수) {
// 방어적 코드 작성 가능
if (조건식) {
값이 잘못되었을 때 코드;
return; // 메서드 종료
}
// 멤버변수의 값 수정
this.멤버변수 = 매개변수;
}
- set() 메서드명에 대한 코딩 컨벤션
: set + 변수명을 카멜 노테이션 표기법으로
ex) 변수명 : abc → 메서드명 : setAbc()
# get(), set() 메서드 자동 생성 단축키
- [Shift] + [Alt] + [S] → [Generate Getters and Setters]
정보 은닉 (Information hiding)
- 필요한 만큼 최소한의 정보만 외부에서 접근 가능하도록 오픈하며, 나머지 정보들은 숨김
→ 객체의 오류 방지 & 클라이언트가 더 효율적으로 객체를 활용할 수 있도록 함
캡슐화 (Encapsulation)
- 대부분의 멤버변수와 메서드를 감추고, 꼭 필요한 정보와 기능만 외부에 오픈하며 통합된 인터페이스를 제공함
기타 메모
- 코딩 컨벤션 : 언어별로 가지고 있는 클래스명, 변수명 등 작성 스타일에 대한 규칙
- 방어적 코드 : 값이 잘못 입력되었을 때를 대비한 코드
'Java > Base' 카테고리의 다른 글
[Java] this 키워드와 super 키워드 (0) | 2023.02.08 |
---|---|
[Java] 배열 - 도서 정보 등록·조회·삭제 프로그램 구현 (0) | 2023.02.08 |
[Java] 객체와 클래스 3 : 생성자 (0) | 2023.02.06 |
[Java] 객체와 클래스 2 : 메서드 (멤버 함수) (0) | 2023.02.06 |
[Java] 스택 메모리와 힙 메모리 (0) | 2023.02.06 |