Rubyのクラス、継承

クラスを作る

class クラス名
  クラスの定義
end

initiaizeメソッド

いわゆるコンストラクタ

class Test

  def initialize(myname)
    @name = myname
  end

end

t = Test.new("山田")

initiaizeメソッド:デフォルト値を設定

インスタンス生成時に引数が無い場合のデフォルト値を設定

class Test

  def initialize(myname="デフォルト値")
    @name = myname
  end

end

t = Test.new()

アクセスメソッド

class Test

  attr_accessor :name

  def initialize(myname)
    @name = myname
  end

end

t = Test.new("てっしー")
print t.name

アクセスメソッドの定義

・attr_reader :name  参照のみ可能にする
・attr_writer :name  変更のみ可能にする
・attr_accessor :name 参照と変更の両方を可能になる

クラスの継承

class FlyingRobot < Robot
end

クラスの継承の例

class Robot

  def initialize(name)
    @name = name
    @x = @y = 0
  end

  def move(x, y)
    @x += x
    @y += y
  end

  def to_s
    "#{@name}:#{@x},#{@y}"
  end

end

class FlyingRobot < Robot

  def initialize(name)
    super(name)
    @z = 0
  end

  def move(x, y, z)
    super(x, y)
    @z += z
  end

  def to_s
    super + ",#{@z}"
  end

end

robo1 = FlyingRobot.new("飛べロボット")
robo1.move(20,10,30)
puts robo1