JAVA 접근제한자 public protected default private

JAVA 접근제한자 별 접근허용 범위

  1. public : 모든 접근을 허용
  2. protected : 동일 패키지와 하위 클래스에게 접근 허용
  3. default : 동일 패키지에서 접근 허용
  4. private : 현재 객체 내에서만 허용

허용범위

public

protected

default

private

클래스 내부

O

O

O

O

동일 패키지

O

O

O

X

다른 패키지

O

 X 

X

X

 하위 패키지 

O

O

X

X


기타 JAVA에서 사용한 Modifier 정리


final

불변 객체를 의미한다.  final로 선언된 객체는 초기화 및 할당을 최초 1회만 수행할 수 있다.


static

인스턴스에 속한게 아닌, 클래스에 속해있는 변수로 여러 클래스가 공유하는 변수를 의미한다. 클래스가 인스턴스화 되기 전 클래스 로딩시점에 이미 생성되고 단 하나의 객체가 공유되는 개념으로 사용된다.


abstract

추상 메소드, 추상 인터페이스를 정의하는 키워드로 abstract method의 경우 하위 클래스에서 반드시 abstract 를 구현해야 한다.


synchronized

스레드 동기화를 위해서 사용되는 키워드로 synchronized로 선언된 메소드는 어떤 스레드가 대상 메소드를 실행중일때 다른 메소드가 접근을 못하도록 한다. DB로 비유하면 TABLE LOCK의 개념과 유사하다. 메소드나 객체에 synchronized 키워드를 선언할 수 있다.


strictfp

자바에서 float이나 double형은 비트연산의 정밀도가 달라서 부동소수점 연산시 소수점 연산의 에러 가능성이 항상 존재한다. strictfp 키워드를 클래스나 메소드에 지정하는 경우 부동수소점 숫자의 정밀도를 보장한다.


native

Interface를 설계 할 때 내부 메소드에 사용되는 키워드이다. native는 자바가 아닌 다른언어(C나 C++)로 구현할 것이라도 알려주는 키워드이다. JNI를 이용하여 이기종간 호환을 위해서 사용되는 키워드이다.


transient

Serialize의 반대개념으로 대상 변수는 직렬화/역직렬화 처리시 제외한다는 키워드이다. 키워드가 지정된 변수는 직렬화를 통한 오브젝트 통신시에 제외되고 처리된다.


volatile

멀티스레드 환경일 경우 각 스레드마다 동일 메모리를 공유하는 것이 아닌 별도 메모리 공간(CPU캐시)에서 변수를 읽어온다. 이런 경우 각 스레드마다 동일한 변수의 값을 다르게 기억할 수 있다. volatile 키워드는 변수를 읽어 들일 때 CPU캐시가 아닌 컴퓨터의 메인 메모리로 부터 읽거나 쓰도록 처리한다. volatile은 하나의 스레드에서만 쓰기작업을 하고, 다른 스레드는 읽기작업만 하는 경우 효율적으로 사용할 수 있다. (synchronized 키워드는 여러 스레드에서 모두 읽기쓰기가 가능하다)



이 글을 공유하기

댓글

Email by JB FACTORY