今回はメソッドのオーバーライド(上書き)に用いられる、super(スーパー)クラスについて解説したいと思います。Railsでは、Deviseを継承したコントローラーを作成する際に登場するメソッドになります。この記事の内容メソッドのオーバーライドとはsuperクラスとはまとめ参考メソッドのオーバーライドとはメソッドのオーバーライドとは、継承元のクラスと継承先のクラスで同じメソッド名を指定することを言います。これにより、継承先のクラスで定義したメソッドが呼び出されるようになります。言葉だと説明が難しいので、例を用いながら解説していきます。以下のように、Fruitsクラスを定義しました。endendredメソッドを呼び出すと、当然「りんご」が表示されますよね。りんごでは、Fruitsクラスを継承したVegetablesクラスをさらに定義したとします。加えて、Vegetablesクラスの中にはredメソッドも同様に定義しています。endendこの状態でredメソッドを呼び出すとどうなるでしょうか?答えは「トマト」が出力されます。このように、継承元のクラスと継承先のクラスで同じメソッド名を指定していると、継承先のメソッドが呼び出されます。これがメソッドのオーバーライドです。トマトsuperクラスとはでは本題のsuperクラスに移ります。superクラスとは、オーバーライドされる前のメソッドを呼び出すことができるメソッドです。言い換えれば、継承元のメソッドを出力することが可能です。superと記述することで、これらの操作が可能になります。こちらも説明が難しいので、例を用いながら解説していきます。先程と同様にFruitsクラスと、Fruitsクラスを継承したVegetablesクラスを定義しました。endendredメソッドを呼び出すと「トマト」が出力されることは、前回の項目で確認できました。superクラスを用いると、どのような結果に変わるのでしょうか。以下のようにsuperを定義しましょう。endend次に、redメソッドを2回呼び出してみます。すると、以下のように「りんご」→「トマト」と表示されると思います。オーバーライドされる前のメソッドを呼び出すことが、superと記述することで可能になります。トマトこのようにsuperを記述することで、継承元の機能は失われずに追加の機能を実装することが可能になるため、deviseを用いたコントローラー実装などで用いられます。まとめメソッドのオーバーライドとは、継承元のクラスと継承先のクラスで同じメソッド名を指定することsuperクラスとは、オーバーライドされる前のメソッドを呼び出すことができるメソッドであるsuperを記述することで、継承元の機能は失われずに追加の機能を実装することが可能である参考Rubyリファレンス:https://docs.ruby-lang.org/ja/2.5.0/doc/spec=2fcall.html#super今回はメソッドのオーバーライド(上書き)に用いられる、super(スーパー)クラスについて解説しました。難しい概念ですが、この機会にマスターしておきましょう。yoshi19941117TechTechMedia【Rails】複数のステップをまたいで登録できるWizard形式とは?【AWS】本番環境のデータベースの中身を表示・閲覧する方法Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。