[java] 자바 인피니스팬의 접근 제어

자바에서는 클래스, 메소드, 변수 등의 접근 제어를 통해 해당 요소에 대한 접근을 제한할 수 있습니다. 이를 통해 프로그램의 보안성과 모듈성을 높일 수 있습니다.

다음은 자바의 4가지 접근 제어자와 인피니스팬에 대한 설명입니다.

1. 접근 제어자

2. 인피니스팬

package com.example.myapp;

public class MyClass {
    private int privateVar;
    int defaultVar;
    protected int protectedVar;
    public int publicVar;
    
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        
        obj.privateVar = 1; // 동일 클래스 내에서 접근 가능
        obj.defaultVar = 2; // 같은 패키지 내에서 접근 가능
        obj.protectedVar = 3; // 같은 패키지 또는 상속받은 클래스에서 접근 가능
        obj.publicVar = 4; // 어떤 클래스에서도 접근 가능
        
        System.out.println(obj.privateVar); // 출력: 1
        System.out.println(obj.defaultVar); // 출력: 2
        System.out.println(obj.protectedVar); // 출력: 3
        System.out.println(obj.publicVar); // 출력: 4
    }
}

package com.example.myapp;

public class AnotherClass {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        
        obj.privateVar = 1; // 오류! 다른 클래스에서 private 변수에 접근할 수 없음
        obj.defaultVar = 2; // 같은 패키지 내에서 접근 가능
        obj.protectedVar = 3; // 같은 패키지 또는 상속받은 클래스에서 접근 가능
        obj.publicVar = 4; // 어떤 클래스에서도 접근 가능
        
        System.out.println(obj.defaultVar); // 출력: 2
        System.out.println(obj.protectedVar); // 출력: 3
        System.out.println(obj.publicVar); // 출력: 4
    }
}

위의 예제에서는 MyClass라는 클래스와 AnotherClass라는 클래스가 동일한 패키지 com.example.myapp에 속해 있습니다. 이를 통해 서로의 멤버 변수에 접근할 수 있습니다. 하지만 AnotherClass에서는 MyClassprivateVar에 접근할 수 없는 것을 확인할 수 있습니다.

참고자료