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