Rubyの学習歴がまだ浅い人の中には、継承チェーンについて知らない人も多くいるのではないでしょうか。
Rubyの深い理解が必要なプログラムを書くためには、継承チェーンについての理解は必須だ。
私は、Rubyを学習していく過程で、そのように強く感じました。
継承チェーンとは
継承チェーンとは、クラスの連なりのようなものです。
クラスにはスーパークラスがあります。そして、スーパークラスをたどっていくと、BasicObjectまでたどり着きます。
この連なりのことを継承チェーンと言います。
例えば、以下のコードがあるとします。
class ClassA
end
class ClassB < ClassA
end
ClassBはClassAを継承しているので、ClassBのスーパークラスはClasssAということになります。
では、ClassAのスーパークラスはなんでしょうか。
答えはObjectです。
そして、ObjectはBasicObjectを継承しています(Kernelに関しては説明を簡単にするために省略させていただきます。)。
この道のりを継承チェーンと言います。
継承チェーンを理解する重要性
では、これを理解したからと言って、何ができるようになるのでしょうか。
それは、メソッドがどのように実行されているかを知るとわかります。
Rubyのメソッドがよびだされた時、Rubyはまず現在のクラスを確認します。
そして、そこに呼び出されたメソッドがない場合、スーパークラスを確認して、そのメソッドがないか確認します。
それでもない場合は、同じようにまた次のスーパークラスへと移っていきます。
Rubyは継承チェーンをたどって呼び出されたメソッドを解釈しているわけです。
これを理解しておくと、Rubyの理解に大いに役に立ちます。
まとめ
今回は継承チェーンについてみたのですが、しっかりと伝わりましたでしょうか。
記事の内容をまとめると、継承チェーンとは、現在のクラスからたどるスーパークラスたちの連なりということです。
Rubyはメソッドを実行する際に、継承チェーンをたどってメソッドを発見します。
もし何かあればコメントをくださると、私自身の成長にもつながりますので、是非是非よろしくお願いします!