私は、異なるアクセス指定子を持つJavaクラスのmainメソッド内のフィールドを宣言しようとしています..しかし、私はアクセス指定子をpublicとして宣言できません。Javaのmainメソッドの中でフィールドをpublicとして宣言できないのはなぜですか?
答えて
ローカル変数のアクセス指定子を宣言することはできません。これらの変数の有効期間はローカルであるためです。 mainメソッドの場合、内部で宣言された変数はmainメソッド内でのみアクセス可能です。ローカル変数にtutorialspointからこのリソースをチェックアウト:
アクセス指定子はclass
のfields
ためのものです。アクセス指定子を使用して、このフィールドに外部からアクセスする方法を定義します。しかし、メソッドで宣言された変数はlocal variables
です。これらのローカル変数は、このメソッドブロックの外側ではアクセスできません。したがって、アクセス指定子を使用する理由はありません。
あなたは、メソッド内の公共要素を定義することはできません。この要素は、メソッドの実行中に存在し、このmainメソッドの外部ではアクセスできません。
メソッド内のフィールドはメソッドに対してローカルなので、アクセス修飾子はありません。
アクセス修飾子は、クラスレベルで適用され、すなわち
public class Person {
private String name
public String getName() {
return this.name
}
}
ローカル変数は、公開することはできません。 public、private、proctactedは、クラスレベルのメンバでのみ使用されます。
もしそうであれば、メソッドやクラスからどのようにアクセスすることができると仮定します。 locelメンバーの前にスコープを指定することは意味をなさない。
メソッドで宣言された変数(別名ローカル変数)は、メソッド内でのみアクセス可能です。メソッドが戻ると、メソッド内のすべてのローカル変数にアクセスできなくなりました。すべてのローカル変数をprivate
のように扱うことができます。
なぜそれがそう、その後のですか?
ローカル変数の目的は、メソッドの実行中にデータを一時的に保存することです。我々はすべて知っているように、方法のいずれかは何か、またはリターン何か、あるいはその両方を行います。メソッドがこのビジネスを行っている間に、メソッドが何をしているのかを助けるためにオブジェクトが作成される可能性があります。オブジェクトは変数に格納されます。これらの変数はメソッドがその仕事をするのに役立つだけなので、メソッドがその仕事を終えた後は必要ではありません。
参照してください?彼らは一時的です。別のスコープからアクセスするポイントはありません。
- 1. マップとしてクラス名を宣言できないのはなぜですか?
- 2. whileループの後に中括弧なしで宣言文を使用できないのはなぜですか?
- 3. Javaで別のファイルで宣言されているのはなぜですか?
- 4. なぜクラス全体をJavaで同期として宣言できないのですか?
- 5. メソッドをJavaの静的型引数で宣言できますか?いいえ、なぜですか?
- 6. FileSystemInfoがGetAccessControlメソッドを宣言しないのはなぜですか?
- 7. Javaインターフェイスメソッドを抽象として宣言するのはなぜですか?
- 8. Java、別のメソッドの中のメソッド宣言?
- 9. Xcodeはいつ転送メソッドの宣言を必要としないのですか?なぜですか?
- 10. Intellijの設定を編集中にmainメソッドでsymbolを解決できないのはなぜですか?
- 11. なぜthisキーワードがjavaのmainメソッドで許可されないのですか
- 12. C、なぜポインタを宣言して初期化できないのですか?
- 13. ワイルドカードを汎用クラス&メソッド宣言で使用できないのはなぜですか?このような
- 14. 複数のconstをJavaScriptで宣言できないのはなぜですか?
- 15. なぜ、 'main'の前に '宣言指定子が期待されている'と言うのですか?
- 16. mainメソッドをpublic宣言するのはなぜ必須なのですか?JVMがプライベートメインメソッドを実行することができないのはなぜですか?
- 17. mainクラスまたはmainメソッドで配列を宣言することの違いは何ですか?
- 18. 宣言でクラスメンバーを初期化できないのはなぜですか?
- 19. Firebird 2.5で変数を宣言できないのはなぜですか?
- 20. C++でメンバ関数を宣言できないのはなぜですか?
- 21. Angular 2コンポーネントでディレクティブを宣言できないのはなぜですか?
- 22. System.Drawing.Color型の定数を宣言できないのはなぜですか?
- 23. Javaでは、メソッド/コンストラクタ宣言は、別のメソッド/コンストラクタ宣言の中に現れますか?
- 24. なぜGADBannerViewが宣言されていないのですか?
- 25. なぜ 'EINTR'が宣言されていないのですか?
- 26. コンストラクタをC++で静的として宣言できないのはなぜですか?
- 27. 関数名 "_"を宣言できないのはなぜですか?
- 28. クラス内に文字列を宣言できないのはなぜですか?
- 29. なぜアプレットはmain()を必要としないのですか?
- 30. スーパークラスで宣言されていないサブクラスのフィールドにアクセスできますか?
まず第一に考える - なぜあなたは何を達成するであろう、これを行うにはしたいですか?メソッドのローカル変数は、同じメソッド内でしか見えないことを知っているので、たとえあなたが 'public'などに名前を付けることができたとしても、それは変数とプログラムにどのような影響を与えますか?答え:何もないので、Javaはあなたにこれをさせません。 –