オーバーライドについて vol.44
前回は継承についてどのようなものなのか、使い方について説明した。
今回はその継承に対する操作的なことを行う。
継承関係については細かく区切って説明していこうと思う。
継承についてはこちらを見ていただきたい。
では本題に入ろう。
1.オーバーライドとは
継承で受け継いだ、親クラスのメソッドを子クラス側で変更を加えること。
要するに子クラス側で親クラスの処理を上書きして書き換えること。
例を出そう。
前回このようにCellPhoneクラスを親クラスとしてIphoneクラスが子クラスとなり継承を行った。
オーバーライドを記述するのは子クラスである、Iphoneクラスだ。
Iphoneクラスに親クラスである、CellPhoneクラスのmsgメソッドをオーバーライドしてみよう。
現在の処理は、メッセージを送るなので、オーバーライドで
メッセージを送受信するに変えてみよう。
このように親クラスのメソッドと同じメソッドを書くことでオーバーライドできる。
実行してみよう。
このようにオーバーライドが成功した。
2.オーバーライドによるメリット
オーバーライドしなくても親クラスの方を変えればいいと思ったかもしれない。
しかし、今回は継承している子クラスが一つだけだから、そう思うかもしれないが、複数のクラスが子クラスとして継承している場合はどうだろうか。
例を出そう。
CellPhoneクラスを親クラスとした、子クラスAndroidクラスを追加した。
Androidクラスはmsgメソッドでは「メッセージを送る」という処理を実行したい。
Androidクラスはこちら。
CellPhoneクラスを継承している。
Iphoneクラスでのmsgメソッドの処理を「メッセージを送受信する」に変えたいと思い、CellPhoneクラスのmsgメソッドを変更した。
このように親クラスの変更を加えた。
その結果。
Androidクラスにまで影響が出てしまった。
不用意に親クラスを変えてしまうと、継承しているほかのクラスにまで影響が及んでしまう。
そういったことを回避するためにオーバーライドがある。
オーバーライド自体簡単なのでぜひ試してみてほしい。
今回は以上。
では、また次回
元体育会系文系エンジニア石黒