☕ 자바 JAVA/☕ 클래스와 함수 Class & Method

[JAVA]접근 제어자/제한자 access modifier

뉴이 NUEY 2024. 4. 2. 23:32
반응형
접근제어자/접근제한자
modifier

접근제어자 범위와 기호모양

  • private
    현재 class 내 에서만 접근 가능.
  • (default)
    • 현재 package 내에서만 접근 가능.
    • 접근 제어자를 안 붙였을 때 자동으로 default가 됨.
      (특이점이 있는데 밑에 설명 해두겠습니다)
  • ptotected
    • 같은 package 내.
    • 그리고 (다른 package여도) 자손 class 에서 접근 가능.
  • public
    제한 X.

쓰이는 곳

되는 곳

  • 전역변수 맨 앞.
  • 메소드 선언 맨 앞.

안 되는 곳

 

  • 메소드 안 지역 변수에서는 사용 못 합니다.

public class는
해당 파일명과 일치하는 1개만 존재


class에는
public과 (defulat)만

abstract 와 final은 예약어이지 접근제어자는 아니에요.


default
약간 혼돈 스러울 수 있지만
지금까지 위에서 설명한 default는 범위를 얘기합니다.
접근제어자를 적지 않으면 default 또는 pakage private이라고 합니다.

실제로 적는 default라고 적어서 default를 명시하는 경우는 하나입니다.

인터페이스 클래스 안에서 메소드 선언시에만 적는 게 사용 가능.


사용 이유
  • 외부로부터 데이터를 보호하기 위해서
  • 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서
  • 그래서 접근제어자 범위를 좁힐 수 있다면 되도록 좁히는 게 좋다.(특히 변수)


예시
example

MyParentTest의 변수들을 불러들일 때 범위 확인해보기
위와 package가 다름


접근제어자 기본규칙
  • 웬만하면 접근제어자를 명시하는 것이 좋습니다.
    → 여기서 말하는 건 전역변수와 메서드를 말합니다(메서드 안에서는 접근제한자가 필요없으니까요).
  • 전역변수(클래스에서 method밖에 선언된 변수)private을 사용합니다.
  • 메서드는 생성자를 포함해서 public을 사용하는 게 일반적입니다.
※ 예외적인 경우
상속 클래스, Singletone, 프로젝트의 유틸리티(java.util과 비슷한)를 만드는 경우는 
생성자를 포함한 메서드의 접근제어자가 protected나 private등 다르게 사용됩니다.
이 규칙은 메서드에도 거의 동일하게 적용됩니다.

 

반응형