최대 1 분 소요

접근 제어자의 종류

  • public : 접근에 제한이 없음
  • private : 자기 자신 클래스 내에서만 접근 가능
  • default : 동일한 패키지 내에서만 접근 가능
  • protected : 동일한 패키지 내에서만 접근 가능 + 상속을 이용한 접근 가능

접근 제어자를 이용한 캡슐화

  • 접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서이다. 데이터가 유효한 값을 유지하도록 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다
  • 이것을 데이터 감추기라고 하며 객체지향개념에선 캡슐화(encapsulation)이라 한다.
  1. 제어자의 조합
  • 대상에 따라 사용할 수 있는 제어자
대상 사용가능한 접근 제어자
클래스 public, (default), final, abstract
메서드 모든 접근제어자, final, abstract, static
멤버변수 모든 접근제어자, final, static
지역변수 final
  • 제어자 조합해서 사용할 때 주의할 사항
  1. 메서드에 staticabstract를 함께 사용할 수 없다 : static 메서드는 몸통이 있는 메서드에만 사용할 수 있기 때문
  2. 클래스에 abstractfinal을 동시에 사용할 수 없다 :클래스에 사용되는 final은 클래스를 확장할 수 없다는 의미이고, abstract는 상속을 통해서 완성되어야 한다는 의미이므로 서로 모순되기 때문이다.
  3. abstract메서드의 접근 제어자가 private일 수 없다 : abstract메서드는 자손클래스에서 구현하기 위해 접근해야 하기 때문이다.
  4. 메서드에 private와 final을 같이 사용할 필요는 없다 : 접근 제어자가 private인 메서드는 오버라이딩될 수 없기 때문이다. 이 둘 중 하나만 사용해도 의미가 충분하다.

업데이트: