1はじめに
finalキーワードでJava言語は、確かに我々はそれのほとんどは、定数を定義するのに使用された使用を所有する必要があり、非常に精通していないので、今日は、最終的なキーワードの使用を理解する必要があり、このキーワードは非常に簡単です。
それは文字通り最終ある不変最終的意味(ローカル変数とメンバ変数を含む)クラス、メソッド、変数パラメータを変更するために使用することができます。
図2に示すように、最終的な修飾クラス
クラスを表し、最終的な変更クラスが、もはやそれはより完全な機能クラスだ場合、何の拡張、我々は最終的に変更するために使用することはできません、継承することはできません。私たちの最も人気のある文字列、整数、システムおよび他のクラスが変更され、最終的に使用することで、それはもはや、他のクラスによって継承することはできません。
それは、最終的な修正クラスにコンパイル時にエラーが継承されます。
3、修飾法
最終的な修正方法は、この方法は、方法のサブクラスをオーバーライドすることができないことを示しています。あなたがメソッドの機能が十分に完了してきたと考えられる場合は、サブクラスの拡張に行く必要はありません、我々は、このメソッドがfinal宣言することができます。例えば、オブジェクト・クラスのgetClass()メソッドは、最終的な変形です。
注意:
。クラスのプライベートメソッドは暗黙のうちに、最終的な方法として指定されています。
B。親クラスのメソッドの最終変更した場合、そのサブクラスは、外出先を上書きすることができます。
注意:親クラスへのアクセス最後のメソッドがプライベートである場合は、サブクラスにつながる直接メソッドを継承することはできませんので、同じ方法が今サブクラスで関数名を定義することができ、その際には、最終的に書き換えないだろう矛盾は、しかし、サブクラスで新しいメソッドを再定義します。
図4に示すように、変数を変更します
変数は、最終的な改変は、典型的には、グローバル定数を定義するために、静的で使用される定数で表しています。以下のように変更され、最終的なメンバ変数やローカル変数を明示的に初期化する必要があるかどうか。
1 パブリック クラスFinalTest { 2 // 明示的に初期化 3。 最終 int型の AA = 11 ; 4 ファイナル INT BB; 5 ファイナル INT CC; 6 ファイナル INT DD; 7 // コンストラクタは、コードブロックの初期化を行う 。8 { 9。 BB = 22である; 10 } 11 // コンストラクタ初期化 12は、 公衆FinalTest(){ 13は CCが= 33であり、 14 DD = 44れる; 15 } 16 17 公衆 FinalTest(int型 CC、INT DD){ 18 この .CC = CC。 19 この .DD = DD。 20 } 21 }
我々が明示的に初期化することができ、初期化コードブロックが構成されている、修飾された最終的な変数を初期化するための3つの方法の方法の設定が初期化されます。
最終修正参照変数は、例を見てみましょう、のようになる場合は、変数の基本データ型を変更し、最終的に全ての前で話すこと:
1 パブリック クラスFinalTest { 2 。3 公共 静的 ボイドメイン(文字列[]引数){ 4 ファイナル AA = AA 新しい新しいAA(); 5 // ここでは説明する最終的な変数に値を割り当てることができません 「AA」 の他のオブジェクトへの参照に 6 // AA AAは=新しい新しい(); 7 aa.i ++ ; 図8 のSystem.out.println(aa.i); 9 } 10 11 } 12は 13である クラスAA { 14 INTはI; 15 } 16 17 // 結果: 1
私たちは、最終的な修正変数を参照しますが、私たちは、見ることができますが、オブジェクト変数iは、我々はそれらを変更することができますが、この変数の参照は、別のオブジェクトを指すことはできません。最後の変更が参照変数であることを示し、あなたが他のオブジェクトを指すことはできませんが、オブジェクト内の変数は、最終的な変更ではない場合、その変数の値を変更することができます。
図5に示すように、変更されたパラメータ
それは、パラメータを変更しなければならない正確なパラメータ最終的な修正は、パラメータの値を変更できないことを示します。
1つの パブリック クラスFinalTest { 2 3 公共 静的 ボイドメイン(文字列[]引数){ 4 FinalTestのF = 新しいFinalTest()。 5 f.show(5 )。 6 } 7 8 公共 ボイドショー(最終 int型のPARAM){ 9 // 编译报错:最終的な変数'PARAM'に値を割り当てることはできません 10 // PARAM = 10。 11 のSystem.out.println(PARAM)。 12 } 13 }
Iが修正パラメータ最終的に使用する場合、このパラメータが一定であることを示しています。我々は割り当てをパラメータするメソッドを呼び出すと、割り当てた後、あなただけのこのメソッドを使用することができ、再割り当てまたはコンパイラエラーすることはできません。パラメーターが参照型である場合、参照変数は、他のオブジェクトを指すことができるが、オブジェクトの内容を変更することができます。