✶Language/Java

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

soonybutter 2024. 8. 10. 20:14
728x90

 

 

 

접근제어자 (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 멤버는 같은 패키지안의 멤버, 클래스에서만 접근이 가능하다.

- 접근제어자를 통해 '캡슐화'가 가능해진다.

- 캡슐화 : 데이터를 모두 숨기고, 기능(메서드)는 꼭 필요한 기능만 노출하는것.

 

 

 

 

 

 

 

 

 

틀린 부분이나 이상한 부분이 있으면 댓글로 지적해주세요! 
감사합니다 :)

728x90