rubyのクラス定義の文法をまとめた
スポンサーリンク
rubyのクラス定義の方法をまとめました。
クラスの定義
以下のようにします。
class Rect # クラス定義 @height = 0 # インスタンス変数 @width = 0 @@HeightMax = 320 # クラス変数 @@WidthMax = 320 def initialize(height, width) # クラスメソッド @height = height @width = width end end
ここでは四角形を表すRectクラスを定義しています。内部にheight, widthと、高さと幅を表す変数を保持。
また、クラスのメソッドinitialize
を定義。initialize
という名前のついたメソッドは、特殊で、C++やJavaでいうコンストラクタに該当します。インスタンス生成後に自動で呼び出されます。
インスタンスの生成
クラス名.new()
で生成。new()
のカッコの中身は、initialize
メソッドの引数を入れましょう。
r = Rect.new(20,20) p r # => #<Rect:0x1bdf488 @height=20, @width=20>
継承
簡易な記述で継承も行えます。javaだとextends
でしたが、それがrubyだと<
の1文字。
今回は、色付きの四角形ColorRectを定義。新たに変数colorを追加しています。
また、継承元のメソッドを書き直すことも出来ます。以下ではinitailize
メソッドを書き直しています。その中で、継承元メソッドをそのまま使いたいときは、super
を使用します。今回は、heightやwidthの代入は継承元のinitalize
と同じなので、記述を簡便にするためsuper
を代用。あとは、新しくcolorの代入だけをかけばOKです。
class ColorRect < Rect # Rectクラスを継承 @color = "rbg(2,34,22)" def initialize(height, width, color) super(height, width) # 継承元のinitialize()を使用 @color = color end end cr = ColorRect.new(20,30,"rbg(255,255,255)") p cr # => #<ColorRect:0x1bdf398 @height=20, @width=30, @color="rbg(255,255,255)">