[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は名前としては似ているのですが、全く異なるのですね。
同様にオーバーライドとオーバーロードも間違えないようにしよう。
[今日のひとこと]
finalとfinallyは名前としては似ているのですが、全く異なるのですね。同様にオーバーライドとオーバーロードも間違えないようにしよう。