Rubyのポリモーフィズムとは【初心者向け】
初心者向けにRubyのポリモーフィズムについて解説しています。ポリモーフィズムはオブジェクト指向の言語において重要な概念のひとつです。クラス継承による例を見ながらその仕組みについて学びましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Rubyのポリモーフィズムについて解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

今回は、Rubyに関する内容だね!

どういう内容でしょうか?

ポリモーフィズムについて詳しく説明していくね!

お願いします!
ポリモーフィズムとは
ポリモーフィズム(Polymorphism, 日本語で多態性)とは、オブジェクト指向プログラミングにおける概念、手法の一つです。
異なるクラスに対し、同一のインターフェースが提供されていることを言います。
クラスを使う側は、クラスの実態を意識せずにメソッドを呼び出せます。
ポリモーフィズムの書き方
Rubyでポリモーフィズムを実装するには、クラス継承を利用します。
親クラスでメソッドを定義します。
子クラスでメソッドをオーバーライド(再定義)します。子クラスA、子クラスBは同一のインターフェース(funcメソッド)を備え、同じように呼び出せます。
メソッドの実際の挙動は、A,Bの実装次第です。
class Parent
def func
# 親クラスの実装
end
end
class ChildA < Parent
def func
# 子クラスAの実装
end
end
class ChildB < Parent
def func
# 子クラスBの実装
end
end
a = ChildA.new
a.func
b = ChildB.new
b.func
実際に書いてみよう
HTML, XML文字列を解析(パース)するプログラムのひな形を考えます。
サンプルコード
class GenericParser
def parse(text)
raise NotImplementedError
end
end
class HTMLParser < GenericParser
def parse(text)
puts "parsing HTML text", text
end
end
class XMLParser < GenericParser
def parse(text)
puts "parsing XML text", text
end
end
parser = HTMLParser.new
parser.parse "<html><p>Hello</p></html>"
parser = XMLParser.new
parser.parse "<xml><item>Hello</item></xml>"
実行結果
parsing HTML text <html><p>Hello</p></html> parsing XML text <xml><item>Hello</item></xml>
解説
1-5行目で親クラスとなるGenericParserを定義します。
7-11行目で子クラスの一つ目HTMLParserを定義しています。
13-17行目で子クラスの二つ目XMLParserを定義しています。
19,20行目でHTMLParserのparseメソッドを呼び出しました。
また、22,23行目でXMLParserのparseメソッドを呼び出しました。
同じparseメソッドであっても、クラスでの定義に応じて挙動の変化することがわかりました。
監修してくれたメンター
| 橋本紘希
システムインテグレータ企業勤務のシステムエンジニア。 開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。