java
접근 제어 & 접근 지정자
컴공 윤서혜 학습일기
2019. 4. 6. 21:34
접근 제어
- Public = 공용이라는 의미이므로 public을 맴버 앞에 붙이면 누구나 자유롭게 접근할 수 있는 멤버가 된다.
- Private = 전용이라는 의미이므로 private를 붙이면 클래스 안에서만 접근이 가능한 맴버가 된다.
- 없음 = 맴버 앞에 접근 지정자가 없으면 디폴트(default)로 동일한 패키지 안에서만 접근이 가능하게 된다. 패키지(Package)란 서로 관련된 클래스들을 하나로 묶은 것이다.
- Protected = 키워드를 붙이면 멤버는 부모 클래스와 자식 클래스만이 접근할 수 있다.(상속은 아직 학습하지 않았다.)
접근 지정자 | 클래스 | 패키지 | 자식 클래스 | 전체 세계 |
public |
O | O | O | O |
protected | O | O | O | X |
없음 | O | O | X | X |
private | O | X | X | X |
접근 지정자
상속시킬 멤버와 상속시키지 않을 멤버를 지정할 수 있다. 자식 클래스는 부모 클래스의 public 멤버, protected 멤버, 디폴트 멤버(부모 클래스와 자식 클래스가 같은 패키지에 있다면)를 상속받는다. 하지만 부모클래스의 private멤버는 상속되지 않는다.
접근 지정자 | 동일한 클래스 | 동일한 패키지의 일반 클래스 | 동일한 패키지의 자식 클래스 | 다른 패키지의 자식 클래스 | 다른 패키지의 일반 클래스 |
public | O | O | O | O | O |
protected | O | O | O | O | X |
없음 | O | O | O | X | X |
private | O | X | X | X | X |
cf. 인터페이스는 항상 public으로 상속 받아야 한다!