[JAVA] 접근 제어자 (private, default, protected, public)

접근제어자 (access modifier)
자바에서 클래스와 클래스의 멤버들을 사용할 때 접근할 수 있는 범위를 지정하는 것.
- public, private, protected, default 키워드가 있다.
공개범위는 public > protected > default > private 순이다.
즉 private의 공개범위가 가장 좁으며, public이 가장 넓다.
접근제어자는 클래스와 클래스멤버에따라 사용할 수 있는 키워드 종류에 차이가 있다!
1. 클래스의 접근제어자
클래스의 접근제어자는
1. public
2. default(기본값, 생략가능) 이 있다.
1. public 클래스 :
- 모든 클래스에서 이 클래스에 접근 가능하다.
- 다른 패키지에서 접근가능하다.
public class Machine{
}
2. default 클래스 :
- 클래스 앞에 명시하지 않으면 default 를 나타낸다.
- 같은 패키지 안의 클래스에서만 접근할 수 있다.
class Calculate{
}
2. 클래스 멤버의 접근제어자
클래스내부의 클래스 멤버가 사용할 수 있는 접근제어자는
1. private
2. default
3. protected
4. public 이 있다.
1. private 멤버 :
- 모든 외부 호출을 막는다.
- 같은 클래스안에 있는 멤버들만 접근이 가능하다.
2. default 멤버 :
- 같은 패키지안의 클래스들에서만 접근이 가능하다.
3. protected 멤버 :
- 같은 패키지 안의 클래스들 + 다른 패키지의 자식 클래스에서 접근이 가능하다.
4. public 멤버 :
- 패키지 상관없이 , 모든 클래스에서 접근이 가능하다.
ex)
puvblic Class sumCounter {
private int cnt = 0;
private int max;
public sumCounter(int max){
this.max= max;
}
public void plusCount() {
if(cnt >= max){
System.out.println("최대값을 초과했습니다");
return;
}
cnt++;
}
public int getCount(){
return cnt;
}
}
💻Tip
- default, private 멤버는 같은 패키지안의 멤버, 클래스에서만 접근이 가능하다.
- 접근제어자를 통해 '캡슐화'가 가능해진다.
- 캡슐화 : 데이터를 모두 숨기고, 기능(메서드)는 꼭 필요한 기능만 노출하는것.
틀린 부분이나 이상한 부분이 있으면 댓글로 지적해주세요!
감사합니다 :)