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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
main関数もTestクラスの静的関数なので
この写真をあげましょう。特に、保護されたものとデフォルトの違いを確認してください。
private キーワードは、このメンバーを含むクラスを除き、このパッケージ内の他のクラスを含む他のクラスがこのメンバーにアクセスできないことを意味します。したがって、異なるパッケージだけでなく、同じパッケージにもアクセスできません。
これが機能しない場合、private変更された変数はどのように使用できるのでしょうか?
private
現在のクラスが機能しないのはなぜですか?
うまくいかない場合、i はどこで無駄に宣言されているのでしょうか? また、プライベートとは、Test クラスを呼び出すときに他のクラスから呼び出すことができず、このクラスは制限されていないことを意味します。
明らかに、再学習する必要があります: public private static protected オブジェクト指向プログラミングにおけるこれら 4 つの一般的な修飾子です
i は static であるため、test.i (instance. static 変数) は Test.i (class. static 変数) と同等であり、i はプライベートであるため、Test クラス内でのみアクセスできます。
これは基本的なプログラミングの質問です。定義と範囲をもう一度見てみたいと思います。
このクラスではプライベートで変更された変数にアクセスできるため、これはアクセス修飾子に関する質問です。
main関数もTestクラスの静的関数なので
この写真をあげましょう。特に、保護されたものとデフォルトの違いを確認してください。
private キーワードは、このメンバーを含むクラスを除き、このパッケージ内の他のクラスを含む他のクラスがこのメンバーにアクセスできないことを意味します。したがって、異なるパッケージだけでなく、同じパッケージにもアクセスできません。
これが機能しない場合、
private
変更された変数はどのように使用できるのでしょうか?現在のクラスが機能しないのはなぜですか?
うまくいかない場合、i はどこで無駄に宣言されているのでしょうか?
また、プライベートとは、Test クラスを呼び出すときに他のクラスから呼び出すことができず、このクラスは制限されていないことを意味します。
明らかに、再学習する必要があります: public private static protected オブジェクト指向プログラミングにおけるこれら 4 つの一般的な修飾子です
i は static であるため、test.i (instance. static 変数) は Test.i (class. static 変数) と同等であり、i はプライベートであるため、Test クラス内でのみアクセスできます。
これは基本的なプログラミングの質問です。定義と範囲をもう一度見てみたいと思います。
このクラスではプライベートで変更された変数にアクセスできるため、これはアクセス修飾子に関する質問です。