2012-05-05 17 views
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プログラムには静的変数が含まれています。しかし私は公的および私的静的変数の違いを理解することはできません。パブリック静的変数とプライベート静的変数の違い

答えて

23

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

静的である変数は完全に別個の事項であり、メソッドとクラスは変数と同じ方法でアクセシビリティを持ちます。

他のレベルのアクセスもあります - protectedとデフォルトの "パッケージ"アクセス(明示的に指定することはできません)。 section 6.6 of the Java Language Specification for more detailsを参照してください。

は、(側の問題として、それはまた、staticが何を意味するかについての学習の価値がある - 彼らはEmployeeではなく、一般的にはEmployee概念を適用すると、あなたはほぼ確実には、これらの変数は静的になりたくありません。 DEPARTMENTはあまりにも、ここでは一定であることは奇妙だ。)

+0

私はTONに感謝しています。 –

+0

私は個人的な静的変数 – Sameer

+0

が必要だと私は考えていません@Sameer:私は完全に同意しません。私は一般的に静的変数を嫌う傾向がありますが、私は絶対に必要ではないと主張しません。今までに定数を使用している唯一の静的変数はありますか? (均等にしても、プライベートではなく時々...) –

1

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

+0

変数の給与はプライベートですが、プライベートな場合はどうすればこの行を "public static void main(String args []){ salary = 1000;"アクセス給与? –

+2

@Androidmaid:あなたは同じクラス(Employee)内からアクセスしているからです。 –

+0

今日のコンピュータ/テクノロジーでは、小さなメモリで何の害もありません – BeyondProgrammer

25
  • public変数がどこからでもアクセス可能である(まあ、どこにでもクラスがアクセス可能です)。

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

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

  • 変数DEPARTMENTfinalであることに注意してください。つまり、設定された変数は変更できません。これは重要なことです。なぜなら、これが悪いコードであることを避けるためです。変数は定数なので、クラス外のものにアクセスすることは大丈夫です。

+0

素晴らしい。私は最終的に混乱している。 –

3
private static double salary 

のみクラス内で利用可能であり、

public static final String DEPARTMENT 

を以下すぎるように、このクラスの外部からアクセスすることができるが

salary or Employee.salary 

としてアクセスすることができます

Employee.DEPARTMENT 
3

パブリック静的 - クラス内だけでなくクラス外からもアクセスできます。

プライベート静的 - クラス内からのみアクセスできます。

スタティックはOOPSでの反OOとみなされます。

例:private static String x; は、クラス内でのみアクセスできます

public static String x;クラスDogで

はDog.xでどこからでもアクセスできます。

ハッピーコーディング!