ホームページ  >  に質問  >  本文

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日前1391

全員に返信(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 はどこで無駄に宣言されているのでしょうか?
    また、プライベートとは、Test クラスを呼び出すときに他のクラスから呼び出すことができず、このクラスは制限されていないことを意味します。

    返事
    0
  • 高洛峰

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

    明らかに、再学習する必要があります: public private static protected オブジェクト指向プログラミングにおけるこれら 4 つの一般的な修飾子です

    返事
    0
  • 大家讲道理

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

    i は static であるため、test.i (instance. static 変数) は Test.i (class. static 変数) と同等であり、i はプライベートであるため、Test クラス内でのみアクセスできます。

    返事
    0
  • PHP中文网

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

    これは基本的なプログラミングの質問です。定義と範囲をもう一度見てみたいと思います。

    返事
    0
  • 伊谢尔伦

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

    このクラスではプライベートで変更された変数にアクセスできるため、これはアクセス修飾子に関する質問です。

    返事
    0
  • キャンセル返事