접근 제어자

song yuheon·2023년 8월 20일
0

접근 제어자

제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여

  • 클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default

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

      • 클래스 : public, default
      • 메서드 & 멤버변수 : public, protected, default, private
      • 지역변수 : X
    • 접근 제어자를 이용한 캡슐화

      • protected를 이용해서 내부의 데이터를 보호한다.
    • 생성자의 접근 제어자

      • 생성자에 접근 제어자를 사용 -> 인스턴스 생성 제한
        일반적으로 생성자의 접근제어자는 클래스의 접근 제어자와 일치
  • Getter와 Setter
    객체의 무결성, 변경이 없는 상태를 유지하기 위해 사용
    외부에서 필드 접근 막기위해 private, default와 같은 접근 제어자 사용 -> private 필드를 읽어오는 일이 필요하면?
    => Getter와 Setter을 이용해서 해결 가능

    Getter 외부에서 객체의 private 필드 읽을 필요 있을 때 Getter 메서드 사용

  • 사용 가능한 제어자 조합

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

    • 메서드에 static과 abstract를 함께 사용 불능
    • 클래스에 abstract와 final을 동시에 사용 불능
    • abstract메서드의 접근 제어자가 private 불가
    • 메서드에 private와 final을 같이 사용할 필요 없음
profile
backend_Devloper

0개의 댓글