java - 为什么此私有静态变量能被访问呢?
高洛峰
高洛峰 2017-04-18 10:47:37
0
11
1451
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变量却报错,为何?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(11)
小葫芦

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿