- 가장 넓은 범위의 접근 제한자
- 주로
Getter
/Setter
메소드에 사용한다. 객체 데이터를 외부에서 직접 접근할 경우 무결성이 깨질 수 있기 때문이다.
- 클래스의 내부, 상속 관계에 있는 클래스에서만 사용 가능한 접근 제한자
- 클래스 외부에서는 proteted멤버에 접근할 수 없다.
- 클래스의 내부에서만 사용 가능한 접근 제한자
- 주로 자료 보호의 목적으로 사용한다.
- 내부에서만 쓰이는 함수에 사용한다.
- Java에는 아무것도 선언하지 않았을 때 기본으로 default 접근 제한자 설정
|
Same Project |
Other Package Subclass |
Same Package |
Same class |
public |
O |
O |
O |
O |
protected |
X |
O |
O |
O |
default |
X |
X |
O |
O |
private |
X |
X |
X |
O |
- 단, Java의 최상위 class 선언에는 public과 default 밖에 적용 할 수 없음
- Inner class 선언에는 protected와 private도 사용 가능함
class Position
{
public:
int x;
int y;
protected:
int a;
private:
int b;
}
- 클래스내 멤버에 대한 접근 제한자를 두지 않으면 private
- 구조체내 멤버에 대한 접근 제한자를 두지 않으면 public
- friend 키워드를 통해 접근 제한자를 무시할 수 있다.
- getter, setter를 단순화 하는 프로퍼티라는 변수를 제공
class Position
{
private int x;
public int X
{
get { return x; }
set { x = value; }
}
}