静的メソッドは静的変数と静的メソッドのみを使用できますが、静的メソッド以外は静的でない変数とメソッドを使用できることはわかります。静的メソッドが静的変数/メソッドにしかアクセスできない理由を説明していますか?静的でないメソッドや変数にはアクセスできません。静的メソッドと変数
答えて
非静的メソッド/フィールドにアクセスするには、そのクラスのインスタンスが必要です。
...によって定義されています。 –
しかし、OPは* why *を知りたがっています。これは何らかのルールですか、それとも理由がありますか?それは私たちに "はい、非常に重要な理由がある"と説明することになります。私見では... – paulsm4
「静的」とは実際に何を意味するのか理解していれば、その理由は明らかです。 –
考えてみよう:
a)あなたが静的メソッドであったとします。
b)あなたは任意のオブジェクトインスタンスから独立して存在します。クラスインスタンスがない場合でも存在します。
c)静的でない変数にアクセスしたい。 1つのオブジェクトインスタンスにのみ存在する変数 - 特定のオブジェクトインスタンスに特化した変数。
d)どのオブジェクトインスタンスの非静的変数を使用しますか?
静的メソッドは、クラスの非静的メンバーにアクセスする可能性があります(ただし、クラス参照によって行います)。
そうでなければ - クラス参照なし - アクセス不可。
意味がありますか? ;)
クラスをインスタンス化すると、クラスがヒープまたはスタックにロードされます。この場合、アプリケーションには、メモリインスタンスのその部分への参照があります。しかし、静的メソッドはメモリにロードされる関数です。そのため、静的メソッドがクラス変数またはメソッドにアクセスしようとしている場合、静的メソッドが存在する可能性があるため、そのクラスへの複数の参照がヒープ内に存在する可能性があるためです。
静的メソッドから非静的メソッドを呼び出す場合は、そのクラスへのインスタンス(または作成)を使用して、実際にクラス参照を定義できるようにする必要があります。
静的コンテキストでは、 'this'キーワードにアクセスできません。このキーワードは静的コンテキストでは使用できません。インスタンス変数は、コンストラクターが起動するときに初期化されます。しかし、静的変数は、クラスがロードされるときに初期化されます。クラスの読み込み中に、静的コンテキストでインスタンス変数を使用すると、この時点ではインスタンス変数は識別されません。そのときにコンパイル時エラーが発生します。
- 1. 静的メソッドと静的変数のjava
- 2. 静的変数内部の静的メソッド
- 3. 静的メソッドの静的変数
- 4. 静的メソッドとスレッドセーフティのローカル変数
- 5. 静的クラスと静的メソッド
- 6. 静的メソッドと非静的メソッド
- 7. 静的メソッドから非静的メンバー変数へのアクセス
- 8. 静的メソッド内のローカル変数は、静的ていますか?
- 9. 関数内静的変数と静的クラス変数の比較
- 10. Rubyのメソッドの静的ローカル変数?
- 11. 静的メソッド継承と静的変数継承の違いは何ですか?
- 12. パブリック静的変数とプライベート静的変数の違い
- 13. 静的メソッドで静的メソッドと非静的メソッドにアクセスする方法
- 14. 関数と静的メソッドとの比較
- 15. 静的メソッドを使用して静的変数を変更する
- 16. 可変パラメータスレッドセーフな静的メソッド?
- 17. PowerMockitoと静的メソッド
- 18. クラスと静的メソッド
- 19. ガベージコレクタと静的クラス、変数
- 20. whileループと静的変数
- 21. 静的変数とメンバ
- 22. 関数と静的メソッドの使用
- 23. 静的変数
- 24. 静的変数
- 25. 複数の静的メソッド
- 26. synchronizedメソッドと静的変数のアクセスJAVA /アンドロイド
- 27. .equals(Die aDie)メソッドと静的変数の実装
- 28. Tomcat:セッション間で静的変数とメソッドを共有します。
- 29. Pythonのモジュールと静的メソッド間のグローバル変数へのアクセス
- 30. 静的メソッドの非表示と非静的メソッドのオーバーライド
[静的関数?](http://stackoverflow.com/questions/8029845/cannot-be-referenced-from-a-static-function) –
それは重複ではない、私の質問の内容はまったく異なります。 – KyelJmD
この質問に対する回答は、この質問にも同様に適用されます。 –