LoginSignup
0
0

More than 1 year has passed since last update.

クラスの継承

Posted at

DVDクラスがProductクラスを継承するとき、Productクラスのことを継承する時に
ProductクラスのことをDVDクラスのスーパークラス(または親クラス)と呼ぶ。
DVDクラスのことをProductクラスのサブクラス(または子クラス)と呼ぶ。

クラス図

クラスの継承関係を図解するときは、クラス図と呼ばれる図を使う。

クラス図を紹介

このクラス図のように
サブクラスからスーパークラスへ向かって矢印を伸ばしている。

継承の注意点

スーパークラスの機能を全部引き継ぐための仕組みと見なされる場合がある。
それは誤解だ。
継承は機能ではなく、性質や概念の共通点に注目する。

性質や概念が共通しているかを知るための方法

サブクラスはスーパークラスの一種である。(サブクラス is a スーパークラス)と声に出して読んだ時に違和感がないかを確かめることです。
これはis-aの関係

親クラスと子クラスの性質の違い

サブクラスの性質

スーパークラスの性質を特化させたもの。

スーパークラスの性質

サブクラスの性質を汎化させたもの。
汎化とは性質がより大雑把に抽象化されることを指す。

継承関係

Rubyの継承関係は単一継承です。
継承できるスーパークラスは一つだけになります。
(ただしRubyはミックスインという多重継承に似た機能を持っています。)

デフォルトで継承されるObjectクラス

独自の作成したクラスはデフォルトでObjectクラスを継承します。
なので継承した独自に作成したクラスのオブジェクトはto_sメソッドnil?メソッドを使うことができます。

superでスーパークラスのメソッドを呼び出す

継承関係にあり同じメソッド名の場合処理にsuper((引数があれば引数を入れる))を書き込むと親クラスのメソッドと同じ処理します。
また新たに子クラスのメソッドだけに処理を書き足すこともできる。
これをオーバライドという。

出典

0
0
0

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
0
0