IMG-LOGO
공지사항 :

자바 접근 제어자(Access Modifier)

lmkfox - 2025-07-21 06:20:06 21 Views 0 Comment

1. 자바 접근 제어자의 종류

제어자

같은 클래스

같은 패키지

자식 클래스 (다른 패키지)

외부 클래스

public

O

O

O

O

protected

O

O

O

X

(default)

O

O

X

X

private

O

X

X

X

  • (default): 접근 제어자를 명시하지 않은 경우

  • 자식 클래스가 부모 클래스의 protected 멤버에 접근하려면 상속을 받아야 함


2. 제어자별 설명

1) 

public

  • 어디서든 접근 가능

  • 클래스, 메서드, 생성자, 필드 등에 사용

  • 외부에서 자주 사용할 API에는 public을 사용

public class Car {
    public String model;

    public void start() {
        System.out.println("시동을 켭니다.");
    }
}

2) 

private

  • 해당 클래스 내부에서만 접근 가능

  • 외부 클래스나 하위 클래스에서도 접근 불가

  • 가장 제한적인 접근 제어자

  • 일반적으로 **멤버 변수(필드)**에 사용하여 직접 접근을 막고, getter/setter를 통해 간접적으로 접근하게 함

public class Car {
    private String engineNumber;

    public String getEngineNumber() {
        return engineNumber;
    }

    public void setEngineNumber(String number) {
        this.engineNumber = number;
    }
}

3) 

protected

  • 같은 패키지 또는 다른 패키지의 자식 클래스에서 접근 가능

  • 상속 시에 주로 사용됨

  • 외부에는 노출하지 않으면서, 자식 클래스에서는 사용하도록 허용하는 경우 유용

public class Animal {
    protected void makeSound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Dog extends Animal {
    public void bark() {
        makeSound(); // 가능
    }
}

4) (default) – 패키지 전용 접근

  • 접근 제어자를 명시하지 않으면 default 접근으로 간주

  • 같은 패키지 내에서만 접근 가능

  • 다른 패키지에서는 접근 불가

class House {
    void openDoor() {
        System.out.println("문을 엽니다.");
    }
}


3. 클래스에 사용 가능한 제어자

사용 대상

가능 제어자

클래스

public, (default)

필드

public, protected, private, (default)

메서드

public, protected, private, (default)

생성자

public, protected, private, (default)

  • 클래스에는 private 또는 protected 사용 불가

  • 클래스가 public이면 파일 이름과 클래스 이름이 같아야 함


4. 접근 제어자 활용 예시

캡슐화 예

public class BankAccount {
    private int balance;

    public void deposit(int amount) {
        if (amount > 0)
            balance += amount;
    }

    public int getBalance() {
        return balance;
    }
}

  • balance는 private으로 외부에서 직접 접근 금지

  • deposit()과 getBalance()를 통해 제한된 접근 허용


5. 정리

제어자

사용 위치

접근 허용 범위

public

클래스, 필드, 메서드

모든 클래스에서 접근 가능

protected

필드, 메서드

같은 패키지 + 다른 패키지 자식 클래스

(default)

클래스, 필드, 메서드

같은 패키지 내에서만 접근 가능

private

필드, 메서드, 생성자

선언된 클래스 내부에서만 접근 가능


결론

접근 제어자는 클래스 구성 요소에 대한 접근 범위를 명확히 지정함으로써 코드의 안정성과 보안성을 높여줍니다.

특히 객체지향 설계에서 캡슐화와 은닉성을 구현할 때 필수적인 도구입니다.

개발 시에는 최소한의 공개 범위를 유지하는 정보 은닉 원칙을 따르는 것이 좋습니다.


댓글