[Java 캡슐화] 접근 제어자(제한자)의 모든 것

Java의 접근 제어자(제한자)는 객체지향 프로그래밍의 캡슐화를 구현하는 핵심 요소로, 클래스와 멤버의 접근 범위를 결정한다. 🔍



접근 제어자의 범위 💡

접근제어자 4개 표

접근제어자 같은 클래스 같은 패키지 다른 패키지의 자식 클래스 전체
private O X X X
default(=생략) O O X X
protected O O O X
public O O O O


캡슐화 예시 -> private으로 외부 접근 방지

public class BankAccount {
    private int balance;  // 외부에서 직접 접근 불가
    
    public void deposit(int amount) {
        if (amount > 0) {
            this.balance += amount;
        }
    }
}
// main 메소드 -> BankAccount 클래스 하위가 아니라 가정
BankAccount bank = new BankAccount();
bank.balance = 123; // 수정 시도? 하지만, private으로 불가능



접근 제어자 확장 규칙

method override는 부모와 범위가 같거나 넓은 범위로만 사용

public class Parent {
    protected void method() { }
}

class Child extends Parent {
    // 에러: protected -> default로 범위 축소 불가
    void method() { } // 생략=default
}

접근 제어자는 Java에서 코드의 안정성과 유지보수성을 높이는 핵심 요소이며, 이를 통해 객체지향의 중요한 원칙인 캡슐화를 실현할 수 있다.



그 외 제한자 💡

주요 제한자 종류

// static: 클래스 레벨 멤버
static int counter = 0;

// final: 변경 불가능
final class ImmutableClass { }

// abstract: 추상화
abstract class AbstractClass { }

// synchronized: 스레드 동기화
synchronized void threadSafeMethod() { }

댓글남기기