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)">