2017-04-08 13 views
0

私は、異なるアクセス指定子を持つJavaクラスのmainメソッド内のフィールドを宣言しようとしています..しかし、私はアクセス指定子をpublicとして宣言できません。Javaのmainメソッドの中でフィールドをpublicとして宣言できないのはなぜですか?

+0

まず第一に考える - なぜあなたは何を達成するであろう、これを行うにはしたいですか?メソッドのローカル変数は、同じメソッド内でしか見えないことを知っているので、たとえあなたが 'public'などに名前を付けることができたとしても、それは変数とプログラムにどのような影響を与えますか?答え:何もないので、Javaはあなたにこれをさせません。 –

答えて

2

ローカル変数のアクセス指定子を宣言することはできません。これらの変数の有効期間はローカルであるためです。 mainメソッドの場合、内部で宣言された変数はmainメソッド内でのみアクセス可能です。ローカル変数にtutorialspointからこのリソースをチェックアウト:

https://www.tutorialspoint.com/java/java_variable_types.htm

1

アクセス指定子はclassfieldsためのものです。アクセス指定子を使用して、このフィールドに外部からアクセスする方法を定義します。しかし、メソッドで宣言された変数はlocal variablesです。これらのローカル変数は、このメソッドブロックの外側ではアクセスできません。したがって、アクセス指定子を使用する理由はありません。

1

あなたは、メソッド内の公共要素を定義することはできません。この要素は、メソッドの実行中に存在し、このmainメソッドの外部ではアクセスできません。

1

メソッド内のフィールドはメソッドに対してローカルなので、アクセス修飾子はありません。

アクセス修飾子は、クラスレベルで適用され、すなわち

public class Person { 

    private String name 

    public String getName() { 
    return this.name 
    } 

} 
1

ローカル変数は、公開することはできません。 public、private、proctactedは、クラスレベルのメンバでのみ使用されます。

もしそうであれば、メソッドやクラスからどのようにアクセスすることができると仮定します。 locelメンバーの前にスコープを指定することは意味をなさない。

0

メソッドで宣言された変数(別名ローカル変数)は、メソッド内でのみアクセス可能です。メソッドが戻ると、メソッド内のすべてのローカル変数にアクセスできなくなりました。すべてのローカル変数をprivateのように扱うことができます。

なぜそれがそう、その後のですか?

ローカル変数の目的は、メソッドの実行中にデータを一時的に保存することです。我々はすべて知っているように、方法のいずれか何か、またはリターン何か、あるいはその両方を行います。メソッドがこのビジネスを行っている間に、メソッドが何をしているのかを助けるためにオブジェクトが作成される可能性があります。オブジェクトは変数に格納されます。これらの変数はメソッドがその仕事をするのに役立つだけなので、メソッドがその仕事を終えた後は必要ではありません。

参照してください?彼らは一時的です。別のスコープからアクセスするポイントはありません。

関連する問題