제어자 (Modifier)

yeoro·2021년 6월 16일
0
post-thumbnail
post-custom-banner

제어자

제어자란 클래스와 클래스 멤버의 선언 시 사용하여 부가적인 의미를 부여하는 키워드를 의미한다.

자바에서 접근자는 접근 제어자와 기타 제어자로 구분한다.

  • 접근 제어자 : public, default, protected, private
  • 기타 제어자 : static, final, abstract, natvie, transient, synchronized, volatile, strictfp

기타 제어자는 경우에 따라 여러 개를 함께 사용할 수 있지만, 접근 제어자는 두 개 이상 같이 사용할 수 없다.

접근 제어자 (Access Modifier)

의미

접근 제어자란 클래스 외부에서의 직접적인 접근을 제한하는 것이다.

사용

자바에서는 정보 은닉을 위해 접근 제어자라는 기능을 사용한다.

접근 제어자를 사용하면 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화할 수 있다.

이는 객체지향 개념에서 캡슐화(Encapsulation)라고 한다.

접근 제어자는 클래스, 멤버변수, 메서드, 생성자 에 사용될 수 있다.

  • 클래스: publicdefault만 사용 가능하다. 최상위 클래스의 경우 외부에서 접근하지 못하는 클래스는 의미가 없기 때문이다. 단, 내부 클래스의 경우는 모든 접근 제어자를 사용할 수 있다.
  • 메서드, 멤버변수, 생성자: 모든 접근 제어자를 사용할 수 있다.
  • 지역변수: 지역 변수는 선언된 메소드 안에서만 사용하기 때문에 외부에서 참조할 필요가 없어 접근 제어자를 사용하지 않는다.

public

public 으로 선언된 클래스 멤버는 외부로 공개된다. 즉, 접근 제한이 없어 해당 객체를 사용하는 프로그램 어디에서나 접근이 가능한다.

자바 프로그램은 public 메소드를 통해서만 해당 객체의 private 객체에 접근할 수 있다.
따라서, public 메소드는 private 멤버와 자바 프로그램 사이의 인터페이스 역할을 수행한다.

protected

protected 로 선언된 클래스 멤버는 같은 패키지 내의 클래스 혹은 자신을 상속한 자식 클래스에서 접근이 가능한다. 같은 패키지의 자식 클래스뿐만 아니라 다른 패키지의 자식 클래스에서도 접근이 가능한다.

default

default 는 클래스 멤버의 접근 제어 기본값이다. 접근 제어자를 생략했을 때 자동으로 default 로 선언되며, 같은 패키지 내에서만 접근이 가능하다.

private

private 으로 선언된 클래스 멤버는 같은 클래스 내에서만 접근이 가능하다.

기타 제어자

static

static 제어자는 '공통적인' 의미이며, 멤버변수, 메서드, 초기화 블록에 사용할 수 있다.
static 제어자로 선언되면 다음과 같은 특징을 가진다.

  • 프로그램 시작시 최초에 단 한번만 생성되고 초기화된다.
  • 인스턴스를 생성하지 않고 바로 사용할 수 있다.
    - 클래스 내부의 자원에 접근하려면 new 를 통해 해당 클래스의 인스턴스(객체)를 생성해야 하지만, static 제어자로 선언할 경우 인스턴스 생성이 필요 없다.

  • 해당 클래스의 모든 인스턴스가 값을 공유한다.

final

final 제어자는 '변경할 수 없다'는 의미로 사용된다.

  • 클래스: 변경될 수 없고, 확장될 수 없는 클래스가 된다. 따라서 다른 클래스가 상속받을 수 없게 된다.
  • 메서드: 오버라이딩(Overriding)을 통한 재정의가 불가능하다.
  • 멤버변수, 지역변수: 값을 변경할 수 없는 상수(Constant)가 된다.

abstract

abstract 제어자는 '추상적인' 의미로 사용된다.

  • 클래스: 클래스 내에 하나 이상의 추상 메서드를 포함하고 있으면 abstract 제어자를 반드시 붙여야 한다.
  • 메서드: 선언부만 있고 구현부가 없는 메서드가 된다.


[참고]

post-custom-banner

0개의 댓글