ホームページ >Java >&#&チュートリアル >Javaのfinalとは何ですか

Javaのfinalとは何ですか

(*-*)浩
(*-*)浩オリジナル
2019-12-26 13:33:194123ブラウズ

Javaのfinalとは何ですか

final キーワードの基本的な使用法

Java では、final キーワードを使用してクラス、メソッド、変数 (メンバー変数を含む) を変更できます。およびローカル変数)。この3つの側面からfinalキーワードの基本的な使い方を学んでいきましょう。 (推奨学習: Java コース )

1、装飾クラス

クラスが Final で変更されると、このクラスを変更できないことを示します。遺伝性の。つまり、クラスを継承させたくない場合は、final を使用してクラスを変更できます。最終クラスのメンバー変数は必要に応じて Final にすることができますが、最終クラスのすべてのメンバー メソッドは暗黙的に Final メソッドとして指定されることに注意してください。

final を使用してクラスを変更する場合は、慎重に選択する必要があります。このクラスが将来継承やセキュリティ上の理由で本当に使用されない場合を除き、クラスを Final クラスとして設計しないでください。 。

2. 修正方法

以下の文章は『Java プログラミング思考』第 4 版 143 ページからの抜粋です。最終メソッドには 2 つの理由があります。1 つ目の理由は、継承されたクラスがその意味を変更しないようにメソッドをロックするためです。2 つ目の理由は効率です。初期の Java 実装バージョンでは、最終メソッドはインライン呼び出しに変換されました。

ただし、メソッドが大きすぎる場合は、インライン呼び出しによるパフォーマンスの向上が見られない可能性があります。最近の Java バージョンでは、これらの最適化に Final メソッドを使用する必要はありません。"

したがって、 、サブクラスでのメソッドのオーバーライドを明示的に禁止する場合にのみ、メソッドを Final に設定します。つまり、親クラスの最終メソッドをサブクラスでオーバーライドすることはできません。これは、サブクラスが親クラスと同じメソッドを持つことができないことを意味します。

最終変更メソッドは、このメソッドがすでに「最終かつ最終」であることを意味します。つまり、このメソッドはオーバーライドできません (複数の最終変更メソッドをオーバーロードできます)。

ここで注意すべき点が 1 つあります。書き換えの前提は、サブクラスが親クラスからこのメソッドを継承できることであるため、親クラスで最後に変更されたメソッドにもプライベートのアクセス制御権限がある場合、このメソッドはクラスから直接継承できません。

したがって、この時点でサブクラス内に同じメソッド名とパラメータを定義することができ、上書きと最終の競合はなくなり、サブクラス内で新しいメソッドが再定義されます。 (注: クラスのプライベート メソッドは暗黙的に Final メソッドとして指定されます。)

3. 変更された変数 変更された変数は、final で最も一般的に使用される場所であり、この記事でも同様です。次に焦点を当てます。

最後のメンバー変数は定数を表し、一度だけ割り当てることができ、割り当て後に値は変わりません。

final が基本データ型を変更する場合、それは基本データ型の値が初期化されると変更できないことを意味し、final が参照型を変更する場合、初期化後に変更できないことを意味します。これは他のオブジェクトを指しますが、参照が指すオブジェクトの内容は変更される可能性があります。参照される値はアドレスであり、final はその値、つまりアドレスの値が変更されないことを要求するため、本質的には同じことです。

final はメンバー変数 (属性) を変更するため、明示的に初期化する必要があります。初期化方法は 2 つあり、1 つは変数の宣言時に初期化する方法、2 つ目は変数宣言時に初期値を代入せず、その変数が存在するクラスのすべてのコンストラクターで初期値を変数に代入する方法です。 。 初期値。

関数のパラメータの型が Final として宣言されている場合、それはパラメータが読み取り専用であることを意味します。つまり、パラメータを読み取って使用することはできますが、パラメータの値を変更することはできません。

以上がJavaのfinalとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。