자바의 접근제어자는 클래스, 메소드, 인스턴스 및 클래스 변수를 선언할 때 사용됨으로써 외부에서 접근하지 못하도록 제한하는 역할을 합니다.
접근 제어자는 4가지 종류가 있는데
1) public
누구나 접근할 수 있도록 할때 사용
2) protected
같은 패키지 내에 있거나 상속받은 경우에만 접근 가능
3) package-private
아무런 접근 제어자를 적어주지 않을 때이며, 같은 패키지 내에 있을 때만 접근 가능
4) private
해당 클래스 내에서만 접근 가능
또한, 클래스와 멤버에 따라 사용할 수 있는 접근제어자의 종류가 다릅니다.
클래스 - public, package-private
메서드, 멤버번수 - public, protected, package-private, private
위에서 언급한대로 클래스를 정의할 때 사용할 수 있는 접근제어자는 public, package-private 두가지입니다.
모든 클래스에서 해당 클래스에 대한 접근이 가능합니다
같은 패키지 안의 클래스에서만 접근이 가능합니다.
메소드를 정의할때 사용할 수 있는 접근제어자는 public, protected, packate-private, private 4가지 입니다.
모든 클래스에서 접근이 가능합니다.
같은 클래스 안에 있는 멤버들만 접근이 가능합니다
같은 패키지 안의 모든 클래스와, 다른 패지키의 자식 클래스에서 접근이 가능합니다
같은 패키지 안의 클래스에서만 접근이 가능합니다
프로그램은 개발자가 프로그래밍 한대로 돌아가게 하는것을 목적으로 한다. 그런데 객체를 사용하는 사용자 입장에서 객체 내부적으로 사용하는 변수나 메서드에 접근하게 되면 개발자가 의도하지 못한 오동작을 일으킬 확률이 높다. 그렇기에 접근제어자를 사용해서 로직이 망가지는것을 방지하는 것이다.
또한, 프로그램의 규모가 커질수록 접근제어자를 사용함으로써 코드의 관리가 편리해진다. 변수나 메서드가 private하면 클래스의 외부에서 접근할 수 없다는것을 알고 있다. 그렇기에 코드를 수정할때 더 적은 범위에만 신경을 쓸 수 있다.