class Test{
private static int i = 1;
public static void main(String[] args){
Test test = new Test();
System.out.println(test.i); //此处为何能访问到私有的i变量呢?
}
}
이론적으로 액세스 수정자는 완전히 필요한 것은 아니며 프로그램 논리에 영향을 주지 않습니다. 이는 프로그래머가 보다 안전한 코드를 작성할 수 있도록 컴파일 단계에서만 수행됩니다. 질문자의 혼란을 이해합니다. 그는 여기서 this.i를 사용하는 것이 더 적절하다고 생각합니다(물론, 형편없는 static 키워드를 삭제하세요). 기억하세요: 이러한 액세스 한정자는 실행 컨텍스트와 아무 관련이 없습니다. 예를 들어 private은 이 변수에 액세스하는 데 사용하는 코드가 컴파일 타임에 현재 클래스에 작성되었는지 여부만 확인합니다. 그 정도로 조잡하다.
이론적으로 액세스 수정자는 완전히 필요한 것은 아니며 프로그램 논리에 영향을 주지 않습니다. 이는 프로그래머가 보다 안전한 코드를 작성할 수 있도록 컴파일 단계에서만 수행됩니다.
질문자의 혼란을 이해합니다. 그는 여기서
this.i
를 사용하는 것이 더 적절하다고 생각합니다(물론, 형편없는static
키워드를 삭제하세요).기억하세요: 이러한 액세스 한정자는 실행 컨텍스트와 아무 관련이 없습니다. 예를 들어
private
은 이 변수에 액세스하는 데 사용하는 코드가 컴파일 타임에 현재 클래스에 작성되었는지 여부만 확인합니다. 그 정도로 조잡하다.