2021年1月28日木曜日

[Java] public final class Test{}クラスとした時の挙動

[Java] public final class Test{}クラスとした時の挙動

	今日の一言

こんにちは、針山散策を今日もほのぼのと行います。
今日は、クラスにfinalを付けた時の動作についてメモしておこうと思います。
public final class クラス名{メンバの定義}
という書式です。
これによって、継承は禁止になります。
継承というのは親のクラスをベースに差分を子クラスに入れ込むことで
コード効率を上げて行くという考え方だと理解しています。(子は親の一種である。という関係)
finalをつける意味は以下だと思います。

finalを付ける理解

不具合が入りやすいクラスにつける

不具合が入り込みやすいからfinalを付けてそのクラスを保証させたいのでしょうか。
例えば、オーバーライドされると不具合発生する可能性が高くなってしまう。

影響度が高すぎるクラスにつける

影響度が高い為、プロテクト的な役割としてfinalを付ける認識です。
例えばStringクラスは継承出来ません。

String定義

public final class String extends Object{}… なので、汎用的に使えて、継承は不可で、Objectのクラスを継承しています。
インタフェースとして、
直列化(Serializable),文字列比較(Comparable),文字列読み取り手続き(CharSequence)
が定義されているようです。
下手気に継承できてしまうと、不具合が入り込みそうですよね。シビアだな~

[今日のひとこと]

finalとfinallyは名前としては似ているのですが、全く異なるのですね。
同様にオーバーライドとオーバーロードも間違えないようにしよう。

0 件のコメント:

コメントを投稿