まず、キーワードの静的
私たちは実際には、プロパティとそのオブジェクトの動作の説明では、クラスを作成し、対象物が実質的な生産しなかった場合はキーワードのみを行うことで、新しいオブジェクトを生成し、その後、システムは、オブジェクトのためのメモリ空間を割り当てます、そのこの方法は、外部コールにのみ使用することができます。
時々、かどうかに関係なく、オブジェクトまたはオブジェクトとメモリ内の静的変数の必要性に関係なく、特定のデータのどのように多くの、唯一のコピー、今回のケースが欲しいです。
以下のためのパッケージ変更; Day14 パブリック クラス中国の{ 静的な文字列の国; // 直接クラス名属性に名前を付けていないクラス変数を使用することができインスタンス化は、オブジェクトは静的変数として知られている、このクラスのすべてで共有されているインスタンス化し、クラスの一部であります 名前のString; // インスタンス変数は、共有することができないオブジェクトをインスタンスに属するの使用部分にインスタンス化された後にのみ、 int型の年齢、 オブジェクトをインスタンス化するために、不要になった後、//静的を追加した後にすることができ }
パッケージday14。 パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ // 中国語C =新しい中国語()。 // c.country = "中国"。 // c.name = "007"; // c.age = 17; // 中国c1は=新しい中国語(); // c1.country = "中国"。 // c1.name = "5172"; // c1.age = 18; // 中国c2は=新しい中国語(); // c2.country = "中国"。 // c2.name = "250"; // C2。 // するSystem.out.println(c.country); // System.out.printlnは(c1.country); // System.out.printlnは(c2.country); // // 質問:書き込み専用にする方法はあります国籍なので、すべてのオブジェクトが同じ国籍を使用することを? Chinese.country = "中国"; // 静的を追加した後、クラス名属性によってアクセスすることができます。 中国のC = 新しい新しい中国語(); c.name = "007" ; c.age = 17 ; 中国のC1 = 新しい新しい中国語() ; c1.name = "5172" ; c1.age = 18であり、 中国語C2= 新しい中国語(); c2.name = "250" ; c2.age = 25 。 System.out.println(Chinese.country)。 } }
第二に、クラスのプロパティ、デザインのアイデアのクラスメソッド
クラスのさまざまなオブジェクト間で共有変数としてクラス属性。クラスの設計、異なる目的のために変化しないクラス属性分析、クラス属性にこれらのプロパティ、クラスのメソッドに対応するメソッドです。
呼び出し側がメソッドとは何の関係もない場合は、このような方法は通常クラスメソッドとして宣言され、オブジェクトを作成する必要はありませんあなたはこのようにメソッド呼び出しを簡素化し、クラスメソッドを呼び出すことができます。
以下のためのパッケージ変更Day14; //は頻繁にいくつかの方法がによって異なるオブジェクトをしたくないのinvokeメソッドに新しいオブジェクトを経由して、書き込み静的にメソッド パブリック クラス中国の{ 公共の 静的な 無効テスト(){ // 静的メソッド設計 するSystem.out.printlnを( 「これは、静的メソッドです」); } }
パッケージDay14、 パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ Chinese.testは(); // クラス名でオブジェクトをインスタンス化する必要があり、この方法は、直接法と呼ばれていません } }
印刷結果:これは静的メソッドであります
、静的メソッドでクラスメソッド、より多くのことを行うためのツール
パッケージDay14; パブリック クラスUtilsの{ // 文字列はヌル文字列であるかどうかを判断し 、パブリック 静的 ブールのisEmpty(文字列S)は{ ブールのフラグ= falseに、 IF(!S = nullを!&& s.equals( "")){ / / sがヌルでもない場合は、文字列sの分析であってもよいし、空でない =フラグにtrueに; } 戻りフラグに; } }
パッケージday14。 パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ 文字列S =「001」。 System.out.println(Utils.isEmpty(S))。 } }
結果を印刷することである:真
第三には、キーワードの静的およびメンバーシップの機能を使用します
1.範囲:Javaクラス、利用可能なプロパティ、メソッド、コードブロックの静的な変形例では、内部クラス
2.静的修飾のメンバーであり、以下の特徴を有します。
①ロードされたクラスローディングのように(クラスがロードされた後、静的メソッドまたはプロパティは、クラス名を使用することができる。メソッドのクラス名や属性)
②オブジェクトの上に優先順位が存在する(新しい使用することができるようになります)
③変性体、全てのオブジェクトによって共有されています
④アクセスが可能な場合は、オブジェクトを作成していない、クラスが直接呼び出します
第四に、クラス変数
クラスのすべてのインスタンスで共有クラス変数(クラス属性)。(これは、インスタンス化される可能性のあるオブジェクトは限り変化として、変更はすべてのクラスを取得することができ、すべてのプロパティを使用することに注意する必要があります共有)
パッケージDay14; パブリック クラス中国の{ // ニーズ、どのように多くの新しいオブジェクトの中国知りたい 公共{)中国( Chinese.count + = 1。; } パブリック 静的の int型のCOUNT; 公共の 静的な 無効showCount(){ System.out.printlnは( "新しい合計" + Chinese.count + "オブジェクト" ); } }
パッケージday14。 パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ 中国語C1 = 新しい中国語()。 中国c2は = 新しい中国語(); 中国のC3は = 新しい中国語(); 中国のC4は = 新しい中国語(); 中国のC5は = 新しい中国語(); Chinese.showCount(); } }
印刷結果:5つの新しいオブジェクトの合計
第五に、クラスメソッド
1例ないオブジェクトは、クラス名は静的のアクセス要素によって指定方法()の。名を使用することができます。
内部の静的メソッドで2クラスの唯一のアクセス静的プロパティことができないクラスのアクセス非静的プロパティ。
3.例では、静的メソッドにアクセスする必要がないため、内部の静的メソッドは、これを持ってすることはできません。(同じスーパーを持つことができない、文句を言います)
この方法は、静的または非静的である必要性をオーバーロードされます。