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变量却报错,为何?
黄舟2017-04-18 10:49:37
private 키워드는 이 멤버를 포함하는 클래스를 제외하고 이 패키지의 다른 클래스를 포함하여 다른 클래스가 이 멤버에 액세스할 수 없음을 의미합니다. 따라서 다른 패키지뿐만 아니라 동일한 패키지에도 액세스할 수 없습니다.
PHP中文网2017-04-18 10:49:37
그래도 작동하지 않으면 i는 어디에 사용됩니까? i를 선언하는 것은 헛된 일이 아닙니까?
또한 비공개이므로 Test 클래스 호출 시 다른 클래스에서 i를 호출할 수 없으며 이 클래스에는 제한이 없습니다.
高洛峰2017-04-18 10:49:37
분명히 다시 배워야 합니다. public private static은 객체 지향 프로그래밍에서 이러한 네 가지 일반적인 수정자를 보호합니다
大家讲道理2017-04-18 10:49:37
i는 static이므로 test.i(instance.static 변수)는 Test.i(class.static 변수)와 동일하고, i는 private이므로 Test 클래스 내에서만 접근이 가능합니다.