[Java] 제어자 Modifier

Bam·2024년 3월 3일
0

Java

목록 보기
36/98
post-thumbnail

오늘 다룰 내용은 제어자인데요. 사실 그동안 몇 번 다뤘습니다. final이라던가 접근 제어자 등 몇 번 이야기했습니다. 오늘은 소개했던 것들은 다시 한 번 더 정리하고, 소개하지 않았던 제어자들은 소개하면서 정리해보려고 합니다.


제어자 Modifier

제어자는 클래스, 변수, 메소드의 선언부에 작성되어서 부가기능을 더하는 키워드들입니다. 크게 접근 제어자와 일반 제어자로 분류할 수 있습니다.

제어자는 여러가지가 섞여서 사용될 수 있습니다. 단, 접근 제어자는 한 선언에 한 번만 올 수 있습니다. 여러 제어자를 섞을 때 순서가 정해지진 않았지만 일반적으로는 접근 제어자를 가장 먼저 작성합니다.


접근 제어자

접근 제어자는 클래스 멤버, 클래스에 사용되어 접근 범위를 지정합니다.

자세한 내용은 포스트를 참조해주세요. 여기서는 간단하게 정리만 하고 넘어갑니다.

제어자에는 크게 세 종류, 정확하게는 네 종류가 있습니다.

  • public: 어디서에서나 멤버, 클래스에 접근 가능.
  • protected: 같은 패키지 내부와 상속 받은 자손들에서만 접근 가능.
  • default: 같은 패키지 내부에서만 접근 가능.
  • private: 자기 자신(같은 클래스)만 접근 가능.

접근 제어자가 작성되지 않은 상태는 default로 간주하며, 접근 제어를 default로 사용하고자 할 때도 따로 쓰지 않습니다.


제어자

나머지 제어자로는 static, final, abstract, native, transient, sycronized, volatile, stricfp가 있습니다.

static

static은 정적(고정된)이라는 뜻을 가지고 있습니다. static 제어자는 클래스의 멤버 변수와 메소드에 사용될 수 있으며 이를 클래스 멤버 변수, 클래스 메소드라고 부릅니다.

static으로 선언하면 인스턴스의 생성 없이도 해당 멤버 변수와 메소드를 사용할 수 있습니다.

자세한 내용은 멤버변수메소드 포스팅에서 확인하실 수 있습니다.

final

final은 마지막이라는 뜻을 가지고 있습니다. final 제어자는 클래스, 변수(멤버 변수, 지역 변수), 메소드에 사용될 수 있으며 해당 키워드가 붙으면 첫 번째 초기화 이후 더 이상 값(내용)을 바꿀 수 없습니다.

  • final 클래스: 더 이상 확장(변경)될 수 없는 클래스
  • final 변수: 더 이상 값이 변경될 수 없는 변수. (상수)
  • final 메소드: 더 이상 변경될 수 없는 메소드. 오버라이딩(재정의) 불가능.

abstract

abstract는 추상적이라는 뜻을 가지고 있습니다. abstract추상 클래스, 메소드를 선언하는데 사용합니다.

추상 클래스추상 메소드를 가지고 있는 클래스임을 알리는데 사용되고, 추상 메소드는 선언부만 작성한채로 구현은 하지않은 메소드를 의미합니다. 추상 메소드는 상속 받은 자식 클래스에서 구현합니다.

  • abstract 클래스: 해당 클래스가 추상 메소드를 가지고 있다고 알리는 역할.
  • abstract 메소드: 해당 메소드가 추상 메소드임을 알리는 역할.

추상 클래스와 메소드에 대한 내용은 조만간 등장할 내용입니다.

native

native 제어자는 다른 언어(보통 C/C++)로 작성된 구문을 자바에서 사용하려고할 때 사용하는 제어자입니다. JNI(Java Native Interface)이라는 것을 이용해서 구현을 하는데, 현재는 자바가 많이 발전하여 자바로 구현하기 까다로운 구문이 없기에 잘 사용되지는 않습니다.

transient

transient직렬화(Serialize)에서 제외하고 싶을 경우 사용하는 제어자입니다.

직렬화는 자바의 객체나 데이터를 외부 자바 시스템에서 사용할 수 있도록 Byte 형태로 변환하는 것입니다.

synchronized

synchronized 제어자는 프로세스(나 스레드)간의 동기화를 지원하여 한 프로세스가 작업중일 때 다른 프로세스가 간섭하지 못하게하여 충돌을 방지하는 제어자입니다.

volatile

volatile 제어자는 메모리에 데이터 읽기, 쓰기를 안전하게 하도록 보장하고 싶을 때 사용하는 제어자입니다.

strictfp

strictfp 제어자는 호환을 위해 부동소수점수를 IEEE 754 표준에 맞게 처리하는 제어자입니다.

0개의 댓글