"안녕하세요, 제가 가장 좋아하는 학생입니다. 이제 변수의 가시성에 대해 말씀드리겠습니다."

"어라? 변수가 안보이는건가?"

"아니오. 변수의 '가시성' 또는 범위는 해당 변수를 참조할 수 있는 코드의 위치를 ​​의미합니다. 일부 변수는 프로그램의 모든 곳에서 사용할 수 있지만 다른 변수는 해당 클래스 내에서만 사용할 수 있고 나머지는 여전히 – 하나의 방법 내에서만. "

"예를 들어 변수가 선언되기 전에는 사용할 수 없습니다."

"말이 되네요."

"다음은 몇 가지 예입니다."


public class Variables

{
   private static String TEXT = "The end.";
  ┗━━━━━━━━━━━━━━┛
   public static void main (String[] args)
                          ┗━━━━━━━┛
  {
     System.out.println("Hi");
     String s = "Hi!";
   ┏┗━━━━┛
    System.out.println(s);
    if (args != NULL)
    {
       String s2 = s;
      ┗━━━━┛
   
      System.out.println(s2);
     
    }
    Variables variables = new Variables();
    System.out.println(variables.instanceVariable);
    System.out.println(TEXT);
   
  }
 
   public String instanceVariable;
  ┗━━━━━━━━━━━━━━━┛
   public Variables()
   {
      instanceVariable = "Instance variable test.";
   }
}

1. 메소드에서 선언된 변수는 선언 시작부터 메소드 끝까지 존재(보이는)합니다.

2. 코드 블록에 선언된 변수는 코드 블록 끝까지 존재합니다.

3. 메소드의 매개변수는 메소드 내의 모든 위치에 존재합니다.

4. 개체의 변수는 변수를 포함하는 개체의 전체 수명 동안 존재합니다. 이들의 가시성은 특수 액세스 수정자( publicprivate ) 에 의해 정의됩니다 .

5. 정적(클래스) 변수는 프로그램이 실행되는 내내 존재합니다. 가시성도 액세스 수정자에 의해 정의됩니다.

"나는 사진을 좋아합니다. 사진은 모든 것을 명확하게 하는 데 도움이 됩니다."

"잘했어, 아미고. 난 항상 네가 똑똑한 사람이라는 걸 알고 있었어."

"' 액세스 수정자 ' 에 대해서도 말씀드리겠습니다 . 겁내지 마세요. 복잡한 것은 없습니다. 여기에서 publicprivate 이라는 단어를 볼 수 있습니다 ."

"난 두렵지 않아. 그냥 눈이 씰룩거릴 뿐이야."

"나는 당신을 믿습니다. 한 클래스의 메서드와 변수가 다른 클래스에서 액세스(또는 표시)되는 방식을 관리할 수 있습니다. 각 메서드 또는 변수에 하나의 액세스 수정자만 할당할 수 있습니다.

1. 공개 액세스 한정자.

프로그램의 어디에서나 public 한정자로 표시된 변수, 메서드 또는 클래스를 사용할 수 있습니다. 이것은 최고 수준의 액세스입니다. 여기에는 제한이 없습니다.

2. 개인 액세스 수정자.

private 한정자로 표시된 변수나 메서드는 선언된 클래스에서만 사용할 수 있습니다. 다른 모든 클래스의 경우 표시된 메서드나 변수는 마치 존재하지 않는 것처럼 표시되지 않습니다. 이것은 최고 수준의 폐쇄성입니다. 자신의 클래스 내에서만 액세스할 수 있습니다.

3. 수식어 없음.

변수 또는 메서드가 한정자로 표시되지 않은 경우 '기본' 액세스 한정자로 표시된 것으로 간주됩니다. 이러한 변수와 메서드는 선언된 패키지의 모든 클래스에서 볼 수 있습니다. 이 수준의 액세스는 변수 및 메서드에 대한 액세스가 해당 클래스를 포함하는 전체 패키지에 대해 열려 있기 때문에 ' 패키지 개인용 ' 액세스라고도 합니다.

다음은 논의한 내용을 요약한 표입니다."

수식어 에서 액세스…
자신의 수업 자체 패키지 모든 클래스
사적인 아니요 아니요
수식어 없음( package-private ) 아니요
공공의