[TIL][Java][2023-12-28] 접근제어자

2023. 12. 28. 19:57TIL/Java

접근제어자

 

클래스의 멤버(필드, 메서드, 생성자 등)에 대한 접근 권한을 제어하는 키워드이다.

클래스 외부에서의 접근을 제한하거나 허용함으로써 데이터 은닉과 보안을 제공한다.

 

  • public : 어떤 클래스에서든 접근 가능하다.
  • protected : 동일한 패키지 내의 클래스 또는 해당 클래스를 상속받은 클래스에서 접근할 수 있다.
  • default : 아무런 접근 제어자를 사용하지 않은 경우이다. 동일한 패키지 내의 클래스에서만 접근할 수 있다.
  • private : 선언된 클래스 내부에서만 접근 가능하며, 외부에서는 접근할 수 없다.

 

 

 

 

사용가능한 접근제어자

 

  • 클래스 : public, default
  • 메서드, 멤버변수 : public, protected, default, private
  • 지역변수 : 없음

 

 

 

 

접근제어자를 이용한 캡슐화 (은닉성)

 

유효한 값을 유지하도록, 함부로 변경하지 못하도록 접근을 제한하는 것이 필요하다.

 

 

 

 

 

생성자의 접근제어자

 

  • 생성자에 접근제어자를 사용함으로 인스턴스의 생성을 제한할 수 있다.
  • 일반적으로 생성자의 접근제어자는 클래스의 접근제어자와 일치한다.

 

 

 

 

Getter 와 Setter

 

주로 private으로 선언된 클래스의 멤버변수에 접근하고 값을 설정하기 위해 사용된다.

 

  • Getter : 클래스 내부의 private 멤버변수의 값을 가져오기 위한 메서드이다.
    이를 통해 클래스 외부에서 해당 변수의 값을 읽을 수 있다.
  • Setter : 클래스 내부의 private 멤버 변수에 값을 설정하기 위한 메서드이다.
    이를 통해 클래스 외부에서 해당 변수의 값을 변경할 수 있다.

 

 

 

 

제어자의 조합

 

  • 클래스 : public, default, final, abstract
  • 메서드 : public, protected, default, private, final, abstract, static
  • 멤버변수 : public, protected, default, private, final, static
  • 지역변수 : final

 

제어자 사용시 주의 사항

  • 메서드에 staticabstract를 함께 사용할 수 없다.
  • 클래스에 abstractfinal을 동시에 사용할 수 없다.
  • abstract 메서드의 접근제어자가 private일 수 없다.
  • 메서드에 privatefinal을 같이 사용할 필요는 없다.