JAVA/java 이론

[자바JAVA]제어자 modifier / 접근 제어자/ 제어자의 조합

자바칩 프라푸치노 2020. 10. 21. 07:05

이 포스팅에는 아래의 내용이 포함되어있습니다.

1. 제어자란?

2. 제어자 종류

3. 접근 제어자

4. 접근 제어자를 사용하는 이유

5. 제어자의 조합


1.제어자란? (modifier)

- 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 나타낸다.

- 접근 제어자와 그 외 제어자로 나뉜다.

- 하나의 대상에 여러 제어자를 조합해서 사용할 수 있지만 접근 제어자는 하나만 사용가능하다.

 

1.navtive : 자바가 아닌 다른 언어로 작성된 메서드들 호출할때 사용하는 것

2.transient : 직렬화에 많이 쓰인다.

   직렬화 : 객체를 데이터 스트림으로 만드는 것인데 다시 말해, 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것을 말함.

3. Synchronized, volatile : Thread 동기화에 쓰임

4. Strictfp : floatdouble와 같은 부동소수점에 쓰임(소수점의 정확성을 보장)

 


2. static 

클래스의 , 공통적인

- 멤버 변수: 모든 클래스에서 공통적으로 사용할 수 있는 클래스 변수

- 멤버 메서드: 인스턴스를 생성하지 않고도 호출할 수 있는 static메서드

 

3. final

마지막의, 변경될 수 없는

- 클래스: 확장될 수 없는 클래스(상속 x)

- 메서드: 오버라이딩으로 재정의 못함

- 멤버 변수: 값을 변경할 수 없는 상수

(선언시, 혹은 생성자에서 단한번 초기화 가능)

 

4. abstract

추상의, 미완성인

- 클래스: 클래스내에 추상메서드가 선언되어있음

- 메서드: 선언부만 있고 구현부가 없는 메서드

 


5. 접근 제어자

 

- private : 같은 클래스 내에서만 접근이 가능하다.

- default : 같은 패키지 내에서만 접근이 가능하다.

- protected: 같은 패키지 내에서,그리고 다른 패키지의 자손 클래스에서 접근 가능

- public : 어디서든 접근 가능하다.

 

 

5-1 . 접근 제어자를 사용하는 이유

- 외부로부터 데이터를 보호하기 위해서

- 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서

(캡슐화)

 

 

6. 제어자의 조합

- 메서드에 static과 abstract를 사용할 수 없다.

- 클래스에 abstract와 final을 동시에 사용할 수 없다.

( abstract는 상속을 통해 완성이 되어야하는데 final은 상속이 안되기 때문)

- abstract메서드의 접근 제어자가 private일 수 없다.

- 메서드에 private와 final을 같이 사용할 필요는 없다.

(둘다 오버라이딩 못한다는 같은 뜻이기 때문이다.)

 

 

 

728x90