접근제어자
- 접근제어자는 멤버변수, 클래스, 메소드, 생성자에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.
- 접근제어자는 생략 가능하고 생략했을때는 자동으로 default임을 의미한다.
- public : 접근 제한이 전혀 없다. 파일 하나에 한 개의 public class만 사용할 수 있다.
- protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능하다.
- default : 같은 패키지 내에서만 접근 가능하다.
- private : 같은 클래스 내에서만 접근 가능하다.
접근자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 이외 영역 |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
대상에 따라 사용할 수 있는 제어자
대상 | 사용 가능한 접근 제어자 |
클래스 | public, (default), final, abstract |
메소드 | 모든 접근제어자, final, abstract, static |
멤버변수 | 모든 접근제어자, final, static |
지역변수 | final |
제어자 조합해서 사용할 때 주의사항
1) 메소드에 static과 abstract를 함께 사용할 수 없다.
: static 메소드는 몸통이 있는 메소드에만 사용할 수 있기 때문에
2) 클래스에 abstract와 fianl을 동시에 사용할 수 없다.
: 클래스에 사용되는 final은 클래스를 확장할 수 없다는 의미이고, abstract는 상속을 통해서
완성되어야 한다는 의미이므로 서로 모순되기 때문에
3) abstract 메소드의 접근제어자가 private일 수 없다.
: abstract 메소드는 자손클래스에서 구현하기 위해 접근해야 하기 때문에
4) 메소드에 private와 final을 같이 사용할 필요는 없다.
: 접근 제어자가 private인 메소드는 오버라이딩 될 수 없기 때문에 (둘 중 하나만 사용해도 의미가 충분하다)
'JAVA > JAVA2' 카테고리의 다른 글
[java2] #06 - 인터페이스 (interface) (0) | 2022.07.13 |
---|---|
[java2] #05 - 추상클래스(abstract class) (0) | 2022.07.11 |
[java2] #04 - 익명클래스(Anonymous class) (0) | 2022.07.09 |
[java2] #03 - 다형성, instanceof 연산자, Casting (Upcasting, Downcasting) (0) | 2022.07.09 |
[java2] #02 - getter, setter, this 키워드 (0) | 2022.07.09 |