2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】継承チェーンとは?意外と知らない人も多いので解説してみた!

Last updated at Posted at 2021-02-03

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はメソッドを実行する際に、継承チェーンをたどってメソッドを発見します。

もし何かあればコメントをくださると、私自身の成長にもつながりますので、是非是非よろしくお願いします!

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?