>  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变量却报错,为何?

高洛峰高洛峰2744일 전1370

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

  • 天蓬老师

    天蓬老师2017-04-18 10:49:37

    main 함수도 Test 클래스의 정적 함수이기 때문입니다

    회신하다
    0
  • PHPz

    PHPz2017-04-18 10:49:37

    이 사진을 드릴게요. 특히 보호된 것과 기본값의 차이점을 살펴볼 수 있습니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 10:49:37

    private 키워드는 이 멤버를 포함하는 클래스를 제외하고 이 패키지의 다른 클래스를 포함하여 다른 클래스가 이 멤버에 액세스할 수 없음을 의미합니다. 따라서 다른 패키지뿐만 아니라 동일한 패키지에도 액세스할 수 없습니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:49:37

    이렇게 해도 안되면 private수정된 변수는 무슨 용도인가요?

    회신하다
    0
  • 阿神

    阿神2017-04-18 10:49:37

    현재 수업이 진행되지 않는 이유는 무엇인가요?

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:49:37

    그래도 작동하지 않으면 i는 어디에 사용됩니까? i를 선언하는 것은 헛된 일이 아닙니까?
    또한 비공개이므로 Test 클래스 호출 시 다른 클래스에서 i를 호출할 수 없으며 이 클래스에는 제한이 없습니다.

    회신하다
    0
  • 高洛峰

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

    분명히 다시 배워야 합니다. public private static은 객체 지향 프로그래밍에서 이러한 네 가지 일반적인 수정자를 보호합니다

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:49:37

    i는 static이므로 test.i(instance.static 변수)는 Test.i(class.static 변수)와 동일하고, i는 private이므로 Test 클래스 내에서만 접근이 가능합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:49:37

    기본 프로그래밍 질문입니다. 정의와 범위를 다시 한번 살펴보시길 바라겠습니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:49:37

    이 클래스에서는 private으로 수정된 변수에 접근할 수 있기 때문에 접근 한정자에 대한 질문입니다.

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