![見出し画像](https://assets.st-note.com/production/uploads/images/30469757/rectangle_large_type_2_7a13d8e917c8d337fe98b3bba7537cff.jpeg?width=1200)
継承とオーバーライドの禁止 vol.45
今回は継承とオーバーライドをさせない方法についてのみ解説していく。
禁止ということは引き継げないということや変更を加えられないということだ。もしかするともう予想できているかもしれないが、final修飾子を使用する。
今回はそれについてのみなので短い。
継承とオーバーライドについては下記を参照していただきたい。
では本題に入ろう。
1.継承の禁止
継承の禁止にはfinalを使う。
なぜ禁止する方法があるかというと、継承して、変に変更を加えて異常な動きをするクラスが出てしまうことを防ぐためだ。
例えば身近でよく使っているStringもクラス型だと以前説明した。Javaが用意してくれているJavaAPIの一つだとも説明した。
そのStringクラスはfinal修飾子がついている。
書き方としては
public final class クラス名{
メソッドなど
}
の様に修飾子とclassの間にfinalを書くだけで継承を禁止にできる。
実際に書くとこうなる。
このように書くと
子クラスはどうなるのか。
このようにextends以降がエラーとなる。
これが継承の禁止。
JavaAPIには継承できるクラスできないクラスもあるのでfinalがついているついていないで判断できる。
2.オーバーライドの禁止
オーバーライドの禁止も簡単だ。
修飾子とも戻り値の間にfinalを書くだけ。
public final void メソッド名(){
処理
}
このように書くだけだ。
実際に書いてみよう。
このようにmsgメソッドにfinalを書いた。
その結果子クラスのIphoneクラスでオーバーライドしようとしたところエラーとなった。
書き換えられたくないメソッドを作るときはfinalを使うことでオーバーライドの禁止をすることができるようになる。
finalを付けるだけで、継承やオーバーライドの禁止をすることができるということだ。
以前紹介したが、変数を定数にしたり、フィールドを書き換えられないようにしたりもできるのがfinalの特徴だ。
今回は以上。
では、また次回
元体育会系文系エンジニア石黒