12
class Employee{
 // salary  variable is a private static variable
private static double salary;

// DEPARTMENT is a constant
 public static final String DEPARTMENT = "Development";

public static void main(String args[]){
   salary = 1000;
  System.out.println(DEPARTMENT+  "  average salary:"+salary);
}
}

この Java プログラムには静的変数が含まれています。しかし、パブリックとプライベートの静的変数の違いがわかりません。

4

5 に答える 5

28
  • public変数はどこからでもアクセスできます (まあ、クラスにアクセスできる場所ならどこでも) 。

  • 変数は、privateクラス内でのみアクセスできます。

  • 変数は、クラスのstaticインスタンスではなくクラスに属します。

  • 変数DEPARTMENTfinalであることに注意してください。これは、一度設定すると変更できないことを意味します。これは、これが悪いコードになるのを防ぐため、ここで重要です。変数は定数であるため、クラス外のものに変数へのアクセスを与えても問題ありません。

于 2012-05-05T06:36:33.070 に答える
27

パブリック変数は、コード内のどこからでもアクセスできます。プライベート変数は、クラス内でのみアクセスできます。この場合、クラスEmployee.salary内で使用しているので、問題ありません。Employee

変数が静的であることは完全に別の問題であることに注意してください。メソッドとクラスには、変数と同じ方法でアクセシビリティがあります。

利用可能な他のレベルのアクセスもprotectedあり、デフォルトの「パッケージ」アクセス (明示的に指定することはできません) があります。詳細については、Java 言語仕様のセクション 6.6 を参照してください

(副次的な問題として、意味についても学ぶ価値があります。これらの変数は一般的な概念ではなくそれぞれstaticに適用されるため、ほとんどの場合、これらの変数を静的にしたくありません。ここでも が定数であることは奇妙です。 ) EmployeeEmployeeDEPARTMENT

于 2012-05-05T06:32:14.933 に答える
3

public static- クラス外からだけでなく、クラス内からもアクセスできます。

private static- クラス内からのみアクセスできます。

Static は、OOPS ではアンチ OO と見なされます。

class Dog
{
    public static string X;
    private static string y;
}

yのいずれかまたはのみをDog介して内部からのみアクセスできます。 または、クラス内にいる場合、またはヘッダーとして使用している場合は、.Dog.yyXDog.Xusing static DogX

于 2015-04-22T12:34:32.070 に答える
3
private static double salary

はクラス内でのみ使用でき、次のようにアクセスできます。

salary or Employee.salary

その間

 public static final String DEPARTMENT

次のように、このクラスの外部からもアクセスできます

Employee.DEPARTMENT
于 2012-05-05T06:38:48.927 に答える
1

private明らかに、クラスの外部から静的変数にアクセスすることはできずpublic、どこからでも静的変数にアクセスできます。

于 2012-05-05T06:31:13.843 に答える