ファイナルは文字通り「最後、最終」を意味します。この意味はJavaでも表現されています。
ファイナルは、変数(クラス属性、オブジェクト属性、ローカル変数、正式なパラメーターを含む)、メソッド(クラスメソッドおよびオブジェクトメソッドを含む)、およびクラスを変更するために使用できます。
1。最終的な変更クラス:
最終的な変更クラスとは、このクラスがすでに「最後の最終」の意味を持っていることを意味します。したがって、ファイナルで変更されたクラスを継承することはできません。つまり、独自のサブクラスを持つことはできません。
ビューが最終的に変更されたクラスを継承する場合、コンピレーション中にエラーが発生する場合があります。
2。最終的な変更方法:
最終的な変更方法は、この方法に「最後の最終」の意味がすでにあることを意味します。つまり、この方法は書き直すことができません(複数の最終的な変更方法を過負荷にすることができます)。
ここで注意すべきことの1つは、上書きの前提条件は、サブクラスが親クラスからこの方法を継承できることです。
この方法は、サブクラスから直接継承することはできません。したがって、この時点で同じメソッド名とパラメーターをサブクラスで定義できます。現時点では、書き換えと最終の間に矛盾はありません。
新しい方法は、サブクラスで再定義されています。
パブリッククラスBはa {public static void main(string [] args){} public void getname(){}} class A { /***プライベート変更のため、この方法はサブクラスに継承することはできません。したがって、サブクラスのgetNameメソッドは再定義され、 *サブクラス自体に属し、コンパイルは通常 */プライベート最終void getName(){}/ *です。サブクラスはこの方法を継承することができます。3.最終変数の変更:
最終的な変更変数は、この変数に「最後の最終」の意味があることを意味します。最終変数が初めて定義され、初期化されると、最終的な変更変数値を変更することはできません。
ここに注意すべきいくつかの問題があります:
1.最終的な変更変数は、クラス属性、オブジェクト属性、正式なパラメーター、またはローカル変数であるかどうかにかかわらず、これらの変数を初期化する必要があります(つまり、表示の初期値を指定します)。
ファイナルによって変更された正式なパラメーターの場合、実際のパラメーターによって渡されるため、理解しやすいです。
ファイナルによって変更されていない変数と同じ最終的に変更されたローカル変数の場合、初期化を表示する必要があります。つまり、ローカル変数を初期化する必要があります。
一般的なクラスの属性とオブジェクト属性の場合、クラスとオブジェクトの初期化プロセスから、デフォルトの初期化が最初に実行されることがわかります。次に、表示された割り当てのある変数が再び初期化されます。
ただし、最終的に変更されたクラス属性とオブジェクト属性の場合、初期化が表示されない場合、デフォルト値はデフォルトの初期化値になり、最終自体の開始点と矛盾します。したがって、Java構文は次のように規定しています。
ファイナルによって変更されたクラス属性と変数属性を表示し、初期化する必要があります。
さらに、基本データ型であろうと参照データ型であろうと、最終的な変更変数が初めて表示され、初期化後に変更することはできません。基本的なデータ型については簡単に理解できます。参照用
データ型、参照変数は実際のオブジェクトを指しますが、指摘されたオブジェクトのアドレスを保存します。したがって、その値を変更することはできません。これは、指摘されたオブジェクトを変更できないという意味ではありません。
4。「マクロ交換」/「マクロ変数」の問題は、最終的な変更によって引き起こされます
Javaでは、マクロ変数/マクロ交換は、Javaコードでは、コンピレーション期間中にいくつかの変数を独自の値に直接置き換えて.classファイルにコンパイルできるという事実を指します。したがって、この変更はコンパイルされた.classファイルには存在しなくなりました。
文字列の変数では、しばしば次の状況に遭遇することがあります。
public class test {public static void main(string [] args){string country = "china";文字列名= "qqyumidi"; string userinfo = country + name; //コンピレーションの後、国と名前の変数はまだここにあります、string user = "china" + "qqyumidi"; //コンピレーション後、それは直接中thinaqqyumidiになります}}上記のコードの9行目では、コンパイルされた変数の結果は直接chanieqqyumidiです。 8行目では、国と名前は通常の変数であるため、コンパイラはコンパイル時にuserInfoの値を直接決定することはできないため、
ここでの編集後の結果は、直接中国quyumidiではありません。
ただし、コンピレーション期間中に8行目のコードを中国quyumidiとして直接表現する場合は、最終的な修飾子を使用して国と名前の変数を変更する必要があります。
理由:最終的な修飾子によって変更された変数は、独自の特性により、コンピレーション期間中にその値を直接決定でき、この値は変更できません。編集プロセス中、その変数は表現の値に直接変換できます。
public class test {public static void main(string [] args){final string country = "china";最終文字列name = "qqyumidi"; string userinfo = country + name; //編集後、それは直接chianqqyumidiです}}上記は、編集者がもたらすJava Final Modifier Knowledge Points(必見の記事)の完全な内容です。それがあなたに役立ち、wulin.comをもっとサポートすることを願っています〜