지금을 사는 사람

[Java] 접근 제어자(Access Modifiers) 본문

Java

[Java] 접근 제어자(Access Modifiers)

지금회 2023. 12. 22. 15:14
728x90

소개:

자바에서는 클래스와 클래스의 멤버(필드, 메서드)에 대한 접근을 제어하기 위해 접근 제어자를 사용합니다. 이 블로그에서는 자바의 네 가지 주요 접근 제어자에 대해 알아보고, 각각의 특징과 사용 사례를 살펴보겠습니다.


1. public 접근 제어자

  • 특징:
    • 어떤 클래스, 패키지에서든 접근이 가능합니다.
    • public으로 선언된 클래스의 이름과 파일명은 동일해야 합니다.
  • 사용 사례:
    • 외부에서 자유롭게 접근해야 하는 클래스, 메서드, 필드에 사용됩니다.
public class PublicClass {
    public void publicMethod() {
        // 외부에서 접근 가능한 메서드
    }
}

2. protected 접근 제어자

  • 특징:
    • 동일 패키지 내에서는 자유롭게 접근이 가능합니다.
    • 상속 관계에 있는 다른 패키지의 클래스에서도 접근이 가능합니다.
  • 사용 사례:
    • 클래스의 일부 기능을 자식 클래스에게만 노출하고 싶을 때 사용됩니다.
package example;

public class ProtectedClass {
    protected void protectedMethod() {
        // 상속 관계와 동일 패키지에서 접근 가능한 메서드
    }
}

3. default (package-private) 접근 제어자

  • 특징:
    • 기본적으로 아무 접근 제어자도 사용되지 않을 때의 기본 값입니다.
    • 동일 패키지 내에서만 접근이 가능합니다.
  • 사용 사례:
    • 특별한 접근 제어가 필요하지 않은 경우, 패키지 내부에서만 사용되는 클래스에 적용됩니다.
package example;

class DefaultClass {
    void defaultMethod() {
        // 동일 패키지에서만 접근 가능한 메서드
    }
}

4. private 접근 제어자

  • 특징:
    • 동일 클래스 내에서만 접근이 가능합니다.
    • 외부 클래스나 하위 클래스에서는 직접 접근이 불가능합니다.
  • 사용 사례:
    • 클래스 내부에서만 사용되는 내부적인 세부 구현에 적용됩니다.
public class PrivateClass {
    private void privateMethod() {
        // 동일 클래스에서만 접근 가능한 메서드
    }
}

5. 접근 제어자 사용 시 고려 사항

  • 최소 권한 원칙(Minimum Access Principle):
    • 가장 낮은 접근 권한을 사용하여 필요한 기능만 노출하는 것이 좋습니다.
  • 설계의 모듈화:
    • 클래스 간의 인터페이스를 명확히 정의하여 각 클래스가 필요한 만큼만 노출하도록 설계합니다.
  • 캡슐화 강화:
    • 필드는 private으로 선언하고, 외부에서는 접근자 메서드를 통해 접근하도록 하는 것이 캡슐화를 강화할 수 있습니다.

6. 결론

자바의 접근 제어자는 클래스와 클래스의 멤버에 대한 접근을 효과적으로 제어하는 데 사용됩니다. 적절한 접근 제어자의 선택은 소프트웨어의 보안성과 유지보수성에 큰 영향을 미칩니다. 최소한의 권한으로 필요한 기능만 노출하며, 캡슐화를 강화하여 모듈화된 소프트웨어 설계를 유도하는 것이 좋습니다.

 

728x90

'Java' 카테고리의 다른 글

[Java] 상수(Constant)  (0) 2023.12.26
[Java] 접근제어자 Protected와 Default의 차이  (0) 2023.12.22
[Java] 애노테이션(Annotation)  (0) 2023.12.15
[Java] JVM (Java Virtual Machine)  (0) 2023.12.12
[Java] 컬렉션 (Collection)  (1) 2023.12.12