Java - public, protected, default, private 접근 제어자

박민수·2023년 11월 14일
0

Java

목록 보기
9/13
post-thumbnail

Java - 접근 제어자

Java에서 접근 제어자는 멤버 또는 클래스에 사용되어, 외부로부터의 접근을 제한한다. 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용할 수 있다.
접근 제어자를 사용하는 이유는 외부로부터 데이터를 보호하고, 외부에 불필요하거나 내부적으로만 사용되는 부분을 감추기 위해서이다.

제어자(modifier)란? 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. 제어자는 크게 접근 제어자와 그 외의 제어자로 나뉜다.

접근 제어자의 종류는 다음과 같다.

  • public
  • protected
  • default
  • private

그 외

  • static
  • final
  • abstract
  • native, transient, synchronized, volatile, strictfp

접근 허용 가능 범위

접근 허용 가능 범위 순서는 다음과 같다.

public > protected > default > private

  • public : 접근 제한이 없음
  • protected : 같은 패키지 혹은 다른 패키지의 자손 클래스에서 접근이 가능
  • default : 같은 패키지 내에서만 접근이 가능
  • private : 같은 클래스 내에서만 접근이 가능

접근 제어자의 조합

  1. 메서드에 static과 abstract를 함께 사용할 수 없다. static 메서드는 몸통이 있는 메서드에만 사용할 수 있기 때문이다.
  2. 클래스에 abstact와 final을 동시에 사용할 수 없다. 클래스에 사용되는 final은 클래스를 확장할 수 없다는 의미이고, abstract는 상속을 통해서 완성되어야 한다는 의미이므로 서로 모순되기 때문이다.
  3. abstract 메서드의 접근제어자가 private일 수 없다. abstract 메서드는 자손클래스에서 구현해주어야 하는데 접근 제어자가 private이면, 자손클래스에서 접근할 수 없기 때문이다.
  4. 메서드에 private과 final을 같이 사용할 필요는 없다. 접근 제어자가 private인 메서드는 오버라이딩될 수 없기 때문이다. 이 둘 중 하나만 사용해도 의미가 충분하다.
대상사용가능한 제어자
클래스public, (default), final, abstract
메서드모든 접근 제어자, final, abstract, static
멤버변수모든 접근 제어자, final, static
지역변수final

참조
Java의 정석 기초편 (남궁성 지음)

profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보