Back-End/Java
[자바 / Java] 접근제어자(Acess Modifier)
Kangharyeom
2022. 9. 7. 22:39
728x90
우리가 흔히 접하는 정보들 중에는 각자 나름대로의 중요도가 있다.
교과서와 같은 서적은 모든사람이 공유하기를 원하는 반면, 일기와 같은 것들은 나만 보기를 원한다.
또는 나만의 영역을 프라이빗(private)한 영역이라고 한다.
Java프로그래밍에서도 클래스나 필드, 메서드, 생성자에 영역을 지정해 줄 수 있다.
접근 제어자는 앞서 배운 캡슐화의 목적을 구현하기 위한 핵심 방법이다.
즉, 데이터의 은닉 또는 정보은닉이라는 개념을 생각하며 공부하면 도움이 될 것이다.
접근제어자의 장점은 크게 두가지로 말할 수 있다.
- 클래스 외부로의 불필요한 데이터 노출 방지
- 외부로부터 데이터가 임의로 변경되지 않도록 보호
접근제어자는 네가지가 있는데 제한 범위는 다음과 같다.
접근 제어자 | 같은 클래스 | 같은 패키지 | 자손(하위) 클래스 | 전체 패키지 |
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 |
지역변수 | fianal |
주의사항
- 클래스에서 abstract와 final을 동시에 사용할 수 없다.
- 메서드에서 static과 abstract를 동시에 사용할 수 없다.
- 메서드에서 private과 final을 함께 사용 할 수 없다.
- abstract의 접근제어자는 private이 될 수 없다.