A subclass can replace a parent method with behavior that fits the more specific class.

Method Override

method_override.rb
class Vehicle
  def move(speed)
    "moving at #{speed}"
  end
end

class Bicycle < Vehicle
  def move(speed)
    "pedaling at #{speed}"
  end
end

speed = 
vehicle = Vehicle.new
bicycle = Bicycle.new

puts vehicle.move(speed)
puts bicycle.move(speed)
class Vehicle
  def move(speed)
    "moving at #{speed}"
  end
end

class Bicycle < Vehicle
  def move(speed)
    "pedaling at #{speed}"
  end
end

speed = 
vehicle = Vehicle.new
bicycle = Bicycle.new

puts vehicle.move(speed)
puts bicycle.move(speed)
class Vehicle
  def move(speed)
    "moving at #{speed}"
  end
end

class Bicycle < Vehicle
  def move(speed)
    "pedaling at #{speed}"
  end
end

speed = 
vehicle = Vehicle.new
bicycle = Bicycle.new

puts vehicle.move(speed)
puts bicycle.move(speed)
method override When a subclass defines a method with the same name, Ruby uses the subclass version.