찾다

 >  Q&A  >  본문

java - 为什么此私有静态变量能被访问呢?

class Test{
    private static int i = 1;
    
    public static void main(String[] args){
        Test test = new Test();
        System.out.println(test.i);  //此处为何能访问到私有的i变量呢?
    }
}

如果与Test类不同包,调用i变量却报错,为何?

高洛峰高洛峰2802일 전1447

모든 응답(11)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 10:49:37

    이론적으로 액세스 수정자는 완전히 필요한 것은 아니며 프로그램 논리에 영향을 주지 않습니다. 이는 프로그래머가 보다 안전한 코드를 작성할 수 있도록 컴파일 단계에서만 수행됩니다.
    질문자의 혼란을 이해합니다. 그는 여기서 this.i를 사용하는 것이 더 적절하다고 생각합니다(물론, 형편없는 static 키워드를 삭제하세요).
    기억하세요: 이러한 액세스 한정자는 실행 컨텍스트와 아무 관련이 없습니다. 예를 들어 private은 이 변수에 액세스하는 데 사용하는 코드가 컴파일 타임에 현재 클래스에 작성되었는지 여부만 확인합니다. 그 정도로 조잡하다.

    회신하다
    0
  • 취소회신하다