1。最終的な変更
ファイナルによって変更されたクラスを継承することはできないため、最終クラスのメンバー方法を上書きできず、最終キーワードによって変更されたクラスにはサブクラスがありません。したがって、クラスの実装の詳細は変更できず、拡張できません。最終クラスのすべてのメンバー方法は、最終的な方法として暗黙的に指定され、最終クラスのメンバー変数は必要に応じて最終的に設定できます。
2。最終的な変更方法
クラス内のメソッドが最終キーワードによって変更された場合、そのサブクラスはメソッドを上書きできず、サブクラスによってのみ継承できます。親クラスのメソッドがサブクラスによって上書きされたくない場合、メソッドは最終タイプとして定義できます。さらに、親クラスのプライベート方法(つまり、秘密キーワードによって変更された方法)は、サブクラスによって上書きされることは許可されていません。したがって、親クラスの秘密キーワードによって変更された方法は、デフォルトで最終タイプになります。最終キーワードによって変更された方法には、次の特性があります。
この方法はロックされており、継承クラスがその意味と実装を変更するのを防ぎます。
効率的。コンパイラが最終的な方法を呼び出すと遭遇すると、組み込みメカニズムに入り、実行効率が大幅に改善されます。
さらに、最終的な変更を使用する静的な方法は、属するクラスのサブクラスに隠すことはできません。
3。最終的な変更変数
キーワードファイナルの意味は、「これはかけがえのない」または「最終状態」です。
では、なぜ変更を止めるのですか?
Java言語の発明者は、2つの目的による変更を防ぐことができます。
A.効率の問題:
JDKの特定のクラスの特定の方法は、ユーザーが上書きすることは許可されていません。設計者は、使用される方法が最良の方法であると考えるかもしれません。
ユーザーが個人的にカバーする場合、または過失によりカバーする場合、JVMまたはシステムのシステム機能に影響します。
B.設計要件:
私たち全員が知っているように、いくつかのケースは、メソッド内の匿名の内部クラスのパラメーターの通過など、最終的なキーワードを使用する必要があります。
一部の人々は、最終変数は割り当て後に不変であると言う。
では、これは正確に何を意味するのでしょうか?
この不変とは、参照、アドレス、および参照されるオブジェクトの内容を指します。
つまり、この最終変数は常にオブジェクトを指しており、定数へのポインターではなく、一定のポインターです。
(1)最終キーワードによって変更された基本的なデータ型は、初期化されたら変更できません。
(2)参照タイプの変数である場合、初期化後に別のオブジェクトを指すことはできませんが、参照によって指されたオブジェクトのコンテンツは変更される可能性があります。その理由は、参照データ型のヒープメモリに保存されている参照オブジェクトのアドレスです。最終的な変更の後、参照タイプの後、参照によって指されたヒープメモリスペース(または参照に保存されているヒープメモリアドレス)を変更できません。
ファイナルを使用してクラスの非静的メンバー変数を変更する場合、メンバー変数を初期化する2つの方法があります。
(3)宣言中に初期化(4)変数を宣言するときに初期化します。変数はBlank Final、つまりFinal Blankと呼ばれますが、初期値は、変数が配置されているクラスのすべてのコンストラクターでこの変数に割り当てる必要があります。
ファイナルを使用してクラスの静的メンバー変数を変更する場合、静的メンバー変数を初期化する方法は2つあります。
(5)宣言時の初期化
(7)宣言時に初期化します。 Finalを使用してローカルメンバー変数を変更する場合、使用前に割り当てが初期化されることを確認する必要があります。
要するに、最終的なキーワードによって変更された変数は、宣言されたときに初期化することはできませんが、使用前に変数が初期化されるようにする必要があります。初期化されて割り当てられたら、再割り当てすることはできません。プログラムの出力結果を分析してみてください。
public class test {public static void main(string [] args){string a = "hello2";最終文字列b = "hello";文字列d = "hello";文字列c = b + 2;文字列e = d + 2; System.out.println((a == c)); System.out.println((a == e)); }} 4.最終的な変更パラメーター
メソッドパラメーターが最終タイプの場合、このパラメーターを読み取って使用できますが、パラメーターの値を変更することはできません。この変数は、メソッドが呼び出されたときに作成され、対応するパラメーター値に初期化されます。メソッド本体が実行される前に、その値を変更することはできません。最終キーワードで変更された基本データ型のパラメーター値を変更することはできません。最終的なキーワードで変更された参照データ型は、別のオブジェクトを指す参照または値を再度nullに割り当てることはできませんが、参照オブジェクトのコンテンツをこの参照を使用して変更できます。パラメーターを変更する最終目的の目的は、パラメーターの操作が、呼び出されたメソッド内のメソッド外側の対応する変数の値が変更されるのを防ぐことではなく、メソッド内のパラメーターの再割り当て操作を防ぎ、パラメーターが渡されたときの初期値に影響することです。さらに、最終キーワードを使用してメソッドのパラメーターを変更することは、メソッドの外部から渡されたパラメーターの値のコンテンツを変更するのを防ぐことができません。詳細については、最終的な変更参照データタイプの説明を参照してください。