본문 바로가기

Develop/Java

Java 접근 제어자와 기타 제어자

728x90

접근 제어자

  • 접근제어자는 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 합니다.
  • 접근제어자는 생략가능하며 생략했을 때는 자동으로 default 임을 뜻하게 됩니다. 따라서 default 일경우에는 접근제어자를 지정하지 않습니다.
  • 접근제어자가 사용될 수 있는 곳으로는 클래스, 멤버변수, 메서드, 생성자 등이 있습니다.
  1. private : 같은 클래스 내에서만 접근 가능
  2. default : 같은 패키지 내에서만 접근 가능
  3. protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능
  4. public : 접근 제한이 전혀 없습니다.
제어자  같은 클래스 같은 패키지  자손 클래스   전체
 public        
 protected        
 default        
 private        

접근 범위는 private < default < protected < public 순으로 보다 많은 접근을 허용합니다.

 

기타 제어자

  • native: 자바에서 다른 언어의 메서드, 변수 등을 사용할 수 있게 만들어주는 키워드입니다.
  • strictfp: 자바와 타 플랫폼간의 부동소수점의 정밀도를 맞춰주기 위한 키워드입니다. 다른 플랫폼과 자바는 부동소수점에서 오차가 발생할 수 있는데, 이 키워드를 사용하면 해결됩니다. 클래스, 인터페이스, 메서드의 앞머리에 선언해서 사용할 수 있습니다.
  • volatile: Thread를 위해 사용되는 키워드입니다. CPU Cache와 메인메모리에서의 read & write 상에서의 불일치를 해결하기 위해 사용되는 키워드입니다. 성능에 영향을 줄 수 있는 키워드이니 제한적으로 꼭 필요한 상황에서만 사용해야 합니다.
  • transient: 이 키워드가 사용된 변수는 직렬화 작업에서 제외됩니다.