Javaの修飾子
- アクセス制御修飾子
- 非アクセス修飾子
:Java言語は、次の2つのカテゴリに分け、修飾子の数を提供して
アクセス修飾子
、非アクセス修飾子
修飾子は通常、最も遠位の声明で、クラス、メソッド、または変数を定義するために使用します
パブリッククラスクラス名{ プライベートブールmyFlag 。静的最終ダブル週間= 9.5 ; パブリック静的ボイドメイン(文字列[] 引数){ //方法体} }
アクセス制御修飾子
Javaは、文字クラス、変数、メソッド、およびコンストラクタへのセキュアなアクセスへのアクセスを制御するために使用することができます。
修飾子 | 現在のクラス | 同一包内 | サブクラス | 他のパッケージ |
---|---|---|---|---|
公衆 | √ | √ | √ | √ |
保護されました | √ | √ | √ | - |
デフォルト | √ | √ | - | - |
民間 | √ | - | - | - |
デフォルトは、
任意のキーワードを使用していない、同じパッケージ内のクラスが表示されます。インタフェース変数は暗黙的に宣言されpublic staitc fianl
、公共のためのインターフェイスメソッドのデフォルトの権限。
例
文字列のバージョン= 「1.5.1」。 ブールprocessOrder (){ 戻り真。}
プライベート
アクセスの最も厳しいレベルだけで自分のクラスによってアクセスすることができ、そしてクラスとインタフェースは、プライベート宣言することはできません。
クラスは、外部のパブリックゲッタークラスメソッドを介してアクセスされます。
クラスの背後にある主に実装の詳細とデータ保護クラス。
国民は
アクセスの他の型であってもよいです。
異なるパケット、対応するパケットをインポートする場合は、すべてのパブリックメソッドと変数のクラスはサブクラスに継承することができます。
保護されました
- 同じパッケージ内のベースクラスのサブクラスでは、変数は保護として宣言され、メソッドやコンストラクタは、同じパケットにアクセスする他の任意のタイプであってもよいです。
- 基底クラスではなく、同じパッケージ内の単語は:次に、サブクラス、保護された単語クラスのインスタンスは、継承された基本クラスの他の方法からアクセスすることができ、および保護された基本クラスのインスタンスメソッドにアクセスすることができません。
非アクセス修飾子
-
静的
- 静的変数:
静的オブジェクトはかかわらず、それは静的変数の唯一のコピーであるどのように多くのクラスインスタンスのオブジェクトで、静的変数とは独立して宣言されています。ローカル変数を変更しないでください。 - 静的メソッド
静的オブジェクトは、静的メソッドとは独立して宣言されています。あなたは、非静的クラス変数を使用することはできません。算出するパラメータの静的リストからデータを取得する方法。示例 パブリック クラスInstanceCounter { プライベート 静的 int型 = 0 numInstance 。 保護された 静的 INT 同様にgetCount(){ 戻りnumInstance。 } プライベート 静的 ボイドADDINSTANCE(){ numInstance ++ 。 } パブリック 静的 ボイドメイン(文字列[]引数){ System.out.printlnは( + InstanceCounter.getCount()+ "インスタンス" "で始まります" )。 以下のために(INT ; I <500; iが0 = I ++ ){ 新InstanceCounter(); } のSystem.out.println( "インスタンス"(+ InstanceCounter.getCount "作成")+ )。 } }
- 静的変数:
-
最後の
- 最終的変数:
割り当ては再割り当てすることはできません一度。あなたは明示的に初期値を指定する必要があります。定数を作成するには、通常の静的一緒に。例えば パブリック クラスのテスト{ 最終 int型値= 10 ; // 以下は、定数宣言の例である パブリック 静的 最終 int型 BOXWIDTH = 6。 、 静的 最終列TITLE =「マネージャー」; 公共 ボイドChangeValueは(){ 値 = 12であり; // ここで説明します } }
- 最後の方法は、
サブクラスによって継承することができるが、単語のクラスを変更することができない、主な目的は、方法の内容が変更されないようにするためです。例えば パブリック クラスのテスト{ 公共 最終 ボイドchangeName(){ // メソッド本体 } }
- 最後のクラスが
継承することはできません、何のクラスには、任意の特性finalクラスを継承することはできません例えば パブリック 最終 クラステスト{ // クラスの本体 }
- 最終的変数:
- 概要
- 抽象クラスは、
オブジェクトをインスタンス化するために使用することはできません、目的、それは抽象的で、最終的な変更することはできません、将来のクラスを補強することです。
クラスは抽象メソッドが含まれている場合、このクラスは抽象クラスとして宣言する必要があります。NO側はエラーがコンパイルされません
非抽象メソッドと抽象メソッドが含まれていてもよいです例 抽象 クラスキャラバン{ プライベート ダブル価格; プライベート文字列モデル; プライベート文字列の年、 公共の 抽象 無効 GOFAST(); // 抽象メソッドフォーマット パブリック 抽象 無効changeColor(); }
- 抽象メソッドは
ない実装方法です。単語クラスによって提供される方法の特定の実装。
抽象メソッドは、finalとして宣言することはできないとstaitc
サブクラスも抽象クラスでない限り、すべてのスーパークラスの抽象メソッドのいずれかのワード抽象クラスの継承は、実施されなければならない
形式:public abstractメソッド()。例えば パブリック 抽象 クラススーパー{ 抽象 ボイド M(); // 抽象メソッド } 公共サブクラス延びスーパークラス{ //が抽象メソッドを実装する ボイド(){Mを 法 } }
- 抽象クラスは、
- 同期
同期メソッドは、同じ時間は一つのスレッドだけアクセスすることができ宣言しました。図4は、アクセス修飾子を使用することができます。
例
公共同期無効showDetails (){ ... }
- 揮発性
修飾メンバ変数、それがアクセスされるたびに、スレッドは、メンバ変数の背面に共有メモリから値を強制されます。変更が発生した場合や、スレッドがライトバックガイド共有メモリの値を変更することを余儀なくされます。だから、2つのスレッドが常にメンバ変数の同じ値を参照してください。
パブリッククラスMyRunnable 実装Runnableを { プライベート揮発ブールアクティブ。公共ボイドラン(){ アクティブ= 真。一方、(アクティブ)//第一行{ //代码} } 公共ボイド停止(){ アクティブ= 偽。//第二行} }