Ruby/クラス継承

クラス継承
class JewelryBox < Box
    def look()
        puts "宝箱はキラキラと輝いている。"
    end
end




# openメソッドのオーバーライド
class Box
    def initialize(item)
        @item = item
    end

    def open()
        puts "宝箱を開いた。#{@item}を手にいれた。"
    end
end

class MagicBox < Box
    def open()
        puts "宝箱を開いた。#{@item}が襲いかかってきた!"
    end
end





class Player
    def initialize(name)
        @name = name
    end

    def attack(enemy)
        puts "#{@name}は、#{enemy}を攻撃した!"
    end
end


puts "=== パーティでスライムと戦う ==="
hero   = Player.new("勇者")
warrior = Player.new("戦士")
party = [hero, warrior]

# p party

party.each do |player|
    player.attack("スライム")
end






class Player
    def initialize(name)
        @name = name
    end

    def attack(enemy)
        puts "#{@name}は、#{enemy}を攻撃した!"
    end
end

class Wizard < Player
    def attack(enemy)
        puts "シャラララーン!"
        puts "#{@name}は、#{enemy}に炎を放った!"
    end
end


puts "=== パーティでスライムと戦う ==="
hero   = Player.new("勇者")
warrior = Player.new("戦士")
wizard = Wizard.new("魔法使い")
party = [hero, warrior, wizard]

# p party

party.each do |player|
    player.attack("スライム")
end





class Wizard < Player
    def initialize()
        super("魔法使い")
    end

    def attack(enemy)
        spell()
        puts "#{@name}は、#{enemy}に炎を放った!"
    end

    private

    def spell()
        puts "シャラララーン"
    end
end