2012-04-08 5 views
0

私はJavaでnoobであり、Pythonの後でJavaを学んでいる人です。とにかく、これを理解するのは苦労している。私は違いが何であるかをクラスにJavaでの様々な宣言の相違点

class Bicycle{ 
     .... 
} 

public class Bicycle{ 
    ....} 

があるとし 。 そして、何

public static class Bicycle{ 
       // if this can be a valid class def in first place 
    } 

について、その後、この後...変数についての話をすることができます。

class Bicycle{ 
    int Gear or public int Gear // whats the difference 
    } 

どちらが使用されますか?

答えて

5

これらのキーワード(またはその不足)はアクセス修飾語として知られています。つまり、クラスまたはメンバーのアクセシビリティを制御します。

    : - - どこでも
  • アクセス(無修正)のみアクセス可能同一パッケージ内に

クラスのメンバーは、より多くの可能性を持っている

  • public

    クラスは、次の修飾子を持ちます

  • public - どこでもアクセス可能
  • protected - 同じパッケージにのみアクセス
  • private - -
  • (NO修飾子)延びるクラスの同じパッケージ又はにのみアクセス同じクラスファイルでのみアクセス可能*

* nested classesは、その外部クラスのprivateメンバーにアクセスでき、その逆も可能です。

アクセス修飾子の詳細は、here.を参照してください。基本については、this helpful articleも参照してください。


編集:私はpublic static class Bicycleで、あなたの中間の例を逃した - ここstaticBicycleがネストされたクラスであることを意味する必要があります。静的クラスと非静的な別名インナークラスに分類されるネストされたクラスの説明については、this page(これは既に私の下付き文字でリンクしていました)を参照してください。

3

修飾語は、コード、データ、およびクラスの性質についてコンパイラに情報を提供するJavaキーワードです。それは2つのタイプに分類されます。

  1. アクセス修飾子:public、protected、private。
  2. 非アクセス修飾子(final、Abstract、Synchronized、Native、 stricfp)。

クラスの前にアクセス修飾子を指定しない場合、アクセス修飾子は「デフォルト」アクセス指定子として使用されます。私たちは、静的

public static class A{ 
} 

としてクラスを宣言することはできません。しかし、我々はより多くの明快さを取得するには、静的

public class A 
{  
    static class B{ 

    }  
} 

として内部クラスを宣言することができ

public class A  : //access specification would be public. This class can be access any where. 

class A   : //access specification would be default. This class can be used only in the same package. So, default is called as package level specification 

は「SCJP」からJavaでのアクセス修飾子を参照してください。 by kathy sierra