1
0

More than 1 year has passed since last update.

[Ruby]継承について初心者なりに解説してみた

Last updated at Posted at 2021-10-05

はじめに

本記事では、継承について記述します。
(まず、スプラトゥーンとはイカのゲームです。)

継承

クラスを継承することができ、
もともと存在するクラスから新しいクラスを継承することができます。

親クラス
↓継承
子クラス


「スプラトゥーン」
武器クラス
↓継承
スプラシュータークラス

なぜクラスの継承が必要か

共通の部分をまとめることができるため、効率的が良いからです。

先ほど、スプラトゥーン武器クラスを例に挙げましたが、
さらにいうと以下のように分けられます。

(注意)継承の継承、所謂複数の継承Rubyではできない(後述)です。

武器クラス
↓継承
シュータークラス、ローラークラス、パブロクラスなど

シュータークラス
↓継承
スプラシュータークラス、プロモデラークラス、NZAPクラスなど

スプラシュータークラス
↓継承
スプラシューター(無印)クラス、スプラシューターコラボクラス、スプラシューターベッチュークラスなど

継承の書き方

子クラス<親クラスと書きます。

class SplaShooter < Shooter

end
class Shooter
 def initialize(weapon_type, one_power)
   @name = weapon_type
   @power = one_power
 end

 def info
   puts "武器タイプ:#{@name} 攻撃力:1発#{@power}ダメージ"
 end

end

class SplaShooter < Shooter

end

spla_shooter = SplaShooter.new("スプラシューター系", 35)

spla_shooter.info

# 武器タイプ:スプラシューター系 攻撃力:1発35ダメージ

SplaShooterクラスShooterクラスを継承していることから、
インスタンス変数やインスタンスメソッドを使用しなくても、問題ありません。

Rubyは単一継承

ここで、重大なことが発覚しました。
以下のサイトにて。
はじめてのRuby!モジュール(module)の使い方を解説!

Rubyは単一継承と呼ばれる言語設計になっています。
要はクラスを一つしか継承できないという設計です。
そのため、クラスと合わせて、モジュールを使用するすることで、擬似的に多重継承を行っているようにコードを書くことができます。

モジュールを使用することにより、擬似的に複数継承ができるとのことです。

後日、モジュールの深堀をします。
申し訳ございません。

以上です。

終わりに

前述の通り、モジュールの理解をしたいと思います。

以下参考サイトです。
【Ruby入門】クラスの継承まとめ

明日も頑張ります!

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