
public, private, protected, default는 자바와 같은 객체지향 프로그래밍 언어에서 사용되는 접근 제어자(access modifier)로 프로그램 내에서 클래스, 변수, 메서드의 가시성과 접근 가능성을 결정한다.
public: public으로 표시된 멤버나 클래스는 프로그램 내의 어느 곳에서든 접근할 수 있다. 다른 클래스와 패키지를 포함한 프로그램 내부 어디에서든 접근이 가능하며, 가장 넓은 범위의 가시성을 가진다.
protected: protected로 표시된 멤버나 클래스는 동일한 클래스 내부, 서브클래스 및 동일한 패키지 내의 다른 클래스에서 접근할 수 있다. 하지만 다른 패키지의 클래스에서는 접근할 수 없으며, 예외적으로 해당 멤버의 클래스가 상속된 서브클래스에서는 접근이 가능하다.
default: default 접근 제어자는 별도의 접근 제어자를 지정하지 않았을 때의 기본 값이다. default로 표시된 멤버나 클래스는 동일한 패키지 내에서만 접근할 수 있으며, 다른 패키지의 클래스에서는 접근할 수 없다.
private: private로 표시된 멤버나 클래스는 동일한 클래스 내에서만 접근할 수 있다. 클래스 외부에서는 접근할 수 없으며, 동일한 패키지 내의 다른 클래스나 서브클래스에서도 접근이 불가하다.