본문 바로가기
JAVA

[자바] 접근 제어자

by 감자b 2024. 12. 24.

접근 제어자 : 외부로부터 속성과 기능을 숨기는 역할

  • private → 모든 외부 호출을 막음
  • default → 같은 패키지 안에서 호출은 허용, package-private 이라고도 함.
  • protected → default와 마찬가지로 같은 패키지 내에서 호출은 허용 + 패키지가 달라도 상속 관계라면 호출 허용
  • public → 모든 외부 호출 허용

private → default → protected → public 순으로 접근을 막는다.

         
접근 제어자 / 범위 다른 패키지(상속X) 상속 관계 같은 패키지 같은 클래스 내의 멤버
private x x x o
default x x o o
protected x o o o
public o o o o
public class Test {
    public int publicNumber = 1;
    protected int protectedNumber = 2;
    int defaultNumber = 3;
    private int privateNumber = 4;
}

 

같은 패키지일 때

public class TestMain {
    public static void main(String[] args) {
        Test test = new Test();
        System.out.println(test.publicNumber);
        System.out.println(test.protectedNumber);
        System.out.println(test.defaultNumber);
//        System.out.println(test.privateNumber); 접근X
    }
}

 

다른 패키지일 때

public class TestMain {
    public static void main(String[] args) {
        Test2 test = new Test2();
        System.out.println(test.publicNumber);
//        System.out.println(test.protectedNumber); 접근X
//        System.out.println(test.defaultNumber); 접근X
//        System.out.println(test.privateNumber); 접근X
    }
}

 

캡슐화 : 속성과 기능을 하나로 묶고 외부에 필요한 기능만 노출하며 나머지는 내부로 숨기는 것으로 외부에서 데이터의 직접적인 변경을 방지할 수 있다.

이러한 캡슐화를 접근 제어자를 통하여 가능하게 할 수 있음.

가급적이면 데이터는 모두 private, 기능은 외부에 꼭 필요한 기능만 노출

'JAVA' 카테고리의 다른 글

[자바] 상속, 추상클래스, 인터페이스  (0) 2024.12.24
[자바] 상수와 리터럴  (0) 2024.12.24
[자바] static 변수와 메서드  (1) 2024.12.24
[자바] 자바 동작 방식과 구조  (0) 2024.12.24
[자바] 자바 기초  (0) 2024.12.24