본문 바로가기
IT 개인 공부/Java

[Java] 접근 제한자

by Libi 2021. 7. 16.
반응형

Java는 클래스들로 이루어져 있으며 클래스는 필드, 메서드 등 멤버들을 가지고 있다.

이렇게 클래스에서 연관 있는 멤버들을 묶어서 가지고 있는 작업을 캡슐화(Encapsulation)라고 한다.

캡슐화의 특징 중 하나는 보안과 관련된 정보 은닉이다. 클래스의 멤버들 중 외부로 노출되어도 되는 것도 있지만 외부로 노출해서는 안 되는 것들도 존재할 수도 있다.

예를 들어 사람의 정보를 가진 클래스가 존재할 경우 이름이나 나이 같은 것들은 외부에 노출되어도 괜찮지만 주민등록번호 같은 민감한 정보는 외부에 노출되면 안 된다.

따라서 클래스 내의 멤버에 접근할 경우 범위를 제한해 줄 수 있어야 한다.

이를 가능하게 해주는 친구가 바로 접근 제한자이다.

Java에서는 public, protected, default, private 총 4가지의 접근 제한자가 존재한다. 이들에 대해서 알아보도록 하자.


Public 

public은 접근 범위가 가장 큰 접근 제한자로 클래스, 패키지에 상관없이 무조건 접근이 가능하다.

Protected

protected는 같은 패키지에서만 접근이 가능하며, 다른 패키지에서는 접근할 수 없다.

다만, 다른 패키지의 클래스를 상속받을 시에는 접근이 가능하다.

Default 

default는 같은 패키지에서만 접근이 가능하며 다른 패키지에서는 접근할 수 없다.

default는 접근 제한자가 생략되어 있을 경우 적용된다. 이것은 약속이기 때문에 멤버나 클래스에 앞에 default 접근 제한자를 붙여서는 안 된다.

 

Private

private는 같은 클래스 내에서만 접근할 수 있다. 같은 패키지여도 접근이 불가능하다.

보통 private으로 해당 멤버에 직접적인 접근을 막으며, 접근하기 위해서 getter, setter 메서드를 사용한다.

 

그렇다면 각각의 접근 제한자는 어떠한 곳에 사용할 수 있을까?

 

클래스(Class)

클래스에는 기본적으로 public과 default만 사용이 가능하다.

 

하지만 클래스 내부에 선언하는 Inner Class인 경우 protected와 private 접근 제한자를 사용할 수 있다.

 

생성자(Construtor)

생성자에는 모든 접근 제한자를 사용할 수 있다.

 

멤버 변수(Member Variable)

멤버 변수도 마찬가지로 모든 접근 제한자를 사용할 수 있다.

 

멤버 메서드(Member Method)

멤버 메서드 역시 모든 접근 제한자를 사용할 수 있다.

 

지역 변수(Local Variable)

지역 변수에는 접근 제한자를 사용할 수 없다.

 

반응형

댓글