Backend/Java

접근제한자(Access Modifiers)

개발자의 첫 걸음 2025. 7. 12. 12:56

 

안녕하세요. 이번에는 접근제한자에 대해 알아볼 건데요!

 

접근 제한자(Access Modifiers)

 

클래스, 메서드, 필드 등에 대한 접근 권한을 제어하는 데 사용(약속)하는 친구예요!

 

코딩의 시작 첫 파일을 실행 중 화면을 보시면

 

public class Hello {
    public static void main(String[] args) {
    
    }
}

대부분 이렇게 코딩을 시작하게 됩니다.

 

그중 앞에 public이 바로 접근제어자입니다.

 

public을 사용한 이유는 시작점을 자바가 찾을 수 있게 일부러 public으로 열어두는 거예요!

 

이제부터 왜 접근제어자 중 시작이 왜 public인지 그리고 종류가 몇 가지가 있는지 함께 보시죠!

 

 

 

public

 

첫 번째 코드는 public입니다.

 

이 친구는 모든 클래스에서나 접근 가능(패키지나 상속과 무관)한 아주 자유로운 친구예요!

 

이 친구의 사용도는 어디서나 사용할 수 있도록 열어두고 싶을 때 사용한답니다.

 

 

protected

 

두 번째 코드는 protected입니다.

 

이 친구는 public과는 다르게 같은 패키지 내에서만 사용가능합니다.

 

그리고 다른 패키지의 자식 클래스(subclass)에도 사용 가능합니다.

 

사용도는 상속 관계에서 자식 클래스가 부모 클래스의 멤버에 접근할 수 있도록 할 때 주로 사용해요!

 

class Parent {
    protected void show() {
        System.out.println("Hello from Parent");
    }
}

class Child extends Parent {
    void display() {
        show();  // 가능 (protected이므로 상속된 자식 클래스에서 접근 가능)
    }
}

간단한 기본 예시로 부모에게 상속된 자녀 클래스가 부모 클래스에게 접근 가능한 걸 볼 수 있답니다.

 

 

default

 

default는 다른 클래스와 다르게 접근제어자를 명시하지 않는 특이한 친구입니다.

 

주 사용도는 같은 패키지에서만 사용하도록 제한할 때 사용한답니다.

// 접근제어자 생략 == default
void logMessage(String msg) { ... }

이 로그 기록을 내부에서만 쓸 수 있도록 하고 싶을 때 사용한다고 생각하시면 됩니다!

 

private

 

마지막 private은 같은 클래스 내부에서만 접근가능합니다.

 

그런데 특이한 점은 외부에서 직접 접근하지 못하도록 막고,

 

메서드를 통해 간접적으로 접근하게 하도록 사용한다는 거예요! 

 

class MyClass {
    private int number;

    public int getNumber() {
        return number;
    }

    public void setNumber(int num) {
        this.number = num;
    }
}

 

사용하는 이유는 간단히 얘기하자면 "나만 봐!"입니다!

 

 

 

접근 제어자 같은 클래스 같은 패키지 다른 패키지(상속 X) 다른 패키지 (상속 O)
public
protected
(default)
private 

간단하게 요약을 표로 정리했답니다!

 

공부를 한다면 이런 생각도 들 거예요.

 

'굳이 다 사용하지 않고 몇 개만 사용하면 좋지 않을까?'

 

접근제어자를 4가지를 사용하는 이유는

 

코드를 보호와 책임을 분리, 협업과 유지보수에 강한 구조를 만들기 위해서입니다.

 

접근제어자를 잘 사용한다면 완성도가 더 높지 않을까요?

 

 

 

 

 

이렇게 접근제어자를 

 

이렇게 접근제어자의 종류 총 4가지를 봤는데요.

 

그래도 public만 고집을 할래 라는 생각한다면

 

완성된 작품은 집으로 표현한다면

 

"모든 문을 열어 놓고 사는 집" 같을 거예요 ㅎㅎ

 

접근제어자를 다양하게 사용해서

 

깔끔하고 견고한 집 같은 작품을 만들어보는 건 어떨까요?