[Java] 제어자(modifier)
Updated:
접근 제어자와 그외 제어자
접근제어자
public | 외부 클래스 어디든 접근 가능 |
---|---|
protected | 상속 관계의 클래스혹은 같은 패키지에서만 접근 가능 |
default | 기본 제한자, 자신 클래스 내부와 같은 패키지 내부에서만 접근 가능 |
private | 같은 클래스 내부에서만 접근 가능 |
그 외 제어자
Static
- static을 사용
- ⇒ 메모리가 jvm의 static 메모리(해당 영역은 프로그램이 시작하고 종료될 때까지 살아있음)에 올라감
- ⇒ 초기화 과정이 필요없어 static이 선언된 변수, 메서드에 곧장 접근
- 해당 객체를 공유하겠다는 의미
- 다른 곳에서 사용한다면, 그 객체가 모두 동일한 하나의 객체라는 것.
- ⇒ 한 곳에서 객체가 변경된다면 다른 모든 곳에서 변경
Final
- 재할당이 불가능하도록 만드는것
- 상속 & 최초 초기화 이후 재할당이 불가능.
- 값이 불변한 것은 아님
- 보통 Collections타입(Map,List,Set)에 해당
- 기본 타입(기본 데이터 타입인 int, boolean, char)의 경우 재할당이 안되므로 값을 변경될 일이 없다.
왜 상수를 쓸 때 주로 private static final을 쓰는가?
- 메모리에 한번 올라가면 같은 값을 클래스 내부 전체 필드, 메서드에서 공유
- 변하지 않는 값을 호출시마다 새롭게 인스턴스할 필요없이 메모리에 올려놓고 계속 사용가능
참조
- https://luyin.tistory.com/232
Leave a comment