Java 프로그래밍에서 접근 제어자는 클래스의 멤버에 대한 접근 권한을 제어하는 데 사용된다.

이것은 코드의 가독성, 보안성, 재사용성을 높이는 중요한 요소 중 하나다.

 

1. public (공개)

가장 개방적인 접근 권한을 가짐으로 해당 멤버를 어디서든 자유롭게 접근할 수 있다.

//다른 클래스에서도 해당 멤버에 접근 가능

public class AccessClass {
    public int publicField;
    
    public void publicMethod() {
        // public method code
    }
}

 

2. private (비공개)

정보 은닉에 사용된다. 해당 멤버를 같은 클래스 내에서만 접근 가능하도록 제한한다.

public class AccessClass {
    private int privateField;
    
    private void privateMethod() {
        // private method code
    }
}

 

3. protected (보호)

상속과 관련되어 있다. 같은 패키지 내에서는 해당 멤버에 접근 가능하고, 다른 패키지의 하위 클래스에서도 접근 가능하다.

package protectedpackage;

public class AccessClass {
    protected int protectedField;
    
    protected void protectedMethod() {
        // protected method code
    }
}

 

package otherpackage;

import protectedpackage.AccessClass;

public class Subclass extends AccessClass {
    public void accessProtected() {
        protectedField = 10; // 상위 클래스의 protected 멤버에 접근 가능
        protectedMethod();    // 상위 클래스의 protected 메서드에 접근 가능
    }
}

 

4. default (패키지-private)

접근 제어자를 명시하지 않는 경우, 해당 멤버는 같은 패키지 내에서만 접근 가능하다.

다른 패키지에서는 접근할 수 없으며, 패키지 레벨의 접근 제어를 구현하는 데 사용된다.

package mypackage;

class AccessClass {
    int defaultField; // 패키지-private
    
    void defaultMethod() {
        // default method code
    }
}

 

핵심 내용

  • 캡슐화(Encapsulation) - private 접근 제어자를 사용하여 멤버를 보호하고, getter와 setter 메서드를 통해 접근하는 방식으로 정보 은닉을 구현 가능하다.
  • 상속(Inheritance) - protected 접근 제어자를 이용하여 하위 클래스에서 상위 클래스의 멤버에 접근할 수 있다.
  • 패키지 관리 - 패키지 개념을 활용하여 default 접근 제어자를 사용하여 관련 클래스들 간의 접근을 제어할 수 있다.
  • 다형성(Polymorphism) - public 접근 제어자를 사용하여 다형성을 구현하고, 다른 클래스에서 해당 멤버를 오버라이딩하거나 오버로딩할 수 있습니다.

 

반응형