[Java] Class - 접근 제어자(access modifier) #5
목 차
- 접근 제어자
- getter 와 setter
접근 제어자
접근 제어자는 사용자가 Class에 대해서 어디까지 접근할 수 있게 하는 가를 정하는 것이다.
캡슐화라고도 하며, 구성요소 중 일부만 밖으로 공개하여 사용 중에 오용이나 혼란을 방지한다.
(참고: 얄코님의 제대로 파는 자바)
다음은 각 제어자에 대한 비교표이다.
public: 어떤 클래스에서든지 접근할 수 있다.
protected: 같은 패키지 내부와, 자신을 상속한 클래스에서 접근이 가능하다.
default: 아무 것도 지정하지 않았을 때의 상태이다. 같은 패키지 내부에서만 접근이 가능하다.
private: 오직 정의된 클래스 내부에서만 접근이 가능하다.
getter 와 setter
private 접근 제어자는 클래스의 중요한 부분이라던지, 바꾸면 안 되는 부분이나 개인정보 등을 무분별하게, 이상한 데이터로 바꾸는 것을 방지한다.
그래서 getter 와 setter를 사용하는데 이는 어떠한 키워드로 정해진 것이 아닌, 메서드의 역할을 말한다.
이게 무슨 말이냐면, Class에 연봉에 대한 정보가 있는 Private 변수가 있다고 해보자
private int annual_income = 0;
이 연봉 변수를 setter로 먼저 설정해 주자. 메서드의 이름이 set으로 시작하는 게 보이는가?
public void setAnuual_incom(int increase_amount){
if(increase_amount < 0) return;
annual_income += increase_amount;
}
인자로 인상된 금액이 들어오면 그만큼 원래 연봉에서 더해주는 메서드이다.
이제 설정을 해주었으니 getter 로 접근해 보자. 메서드의 이름이 get으로 시작한다.
public int getAnnual_incom(){
System.out.println(String.format("%s 님의 연봉은 %d 만원 입니다.",name, annual_income));
return annual_income;
}
// 출력: Daniel 님의 연봉은 5000 만원 입니다.
이렇게 getter을 통해서 말고, 바로 접근을 시도해 보면 어떻게 될까?
annual_income 은 private 접근이라서 에러가 뜬다.
getter 와 setter를 사용하는 이유는?
private 접근 제어자는 해당 Class 에서만 접근이 가능하기에 그 Class 안에 메서드를 만들어서 간접적으로 접근을 하는 것이다.
이를 통해서 보다 안전하게 접근이 가능하다.
'BE > Basic' 카테고리의 다른 글
[Java] 컬렉션(ArrayList, LinkedList, Queue) # 6 (0) | 2024.01.27 |
---|---|
[Java] Class - 생성자(Constructor) #4 (0) | 2024.01.03 |
[Java] 여러가지 연산자 #3 (0) | 2024.01.01 |
[Java] 변수와 타입 #2 (0) | 2023.12.30 |
[Java] HelloWorld! #1 (0) | 2023.12.28 |