Bird
Raised Fist0
Rubyprogramming~10 mins

Method overriding in Ruby - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Method overriding
Define Parent Class with method
↓
Define Child Class overriding method
↓
Create Child object
↓
Call method on Child object
↓
Child's method runs, not Parent's
↓
End
The child class replaces the parent's method with its own version when called on a child object.
Execution Sample
Ruby
class Parent
  def greet
    puts "Hello from Parent"
  end
end

class Child < Parent
  def greet
    puts "Hello from Child"
  end
end

child = Child.new
child.greet
This code shows a child class overriding a method from its parent class and calling the new method.
Execution Table
StepActionEvaluationOutput
1Define Parent class with greet methodParent#greet defined
2Define Child class inheriting Parent and override greetChild#greet defined
3Create Child objectchild is instance of Child
4Call greet on childCalls Child#greet (overrides Parent#greet)Hello from Child
5End of executionNo more code to run
💡 Program ends after calling overridden method on child object
Variable Tracker
VariableStartAfter Step 3Final
childundefinedChild instance createdChild instance
Key Moments - 2 Insights
Why does calling greet on child run Child's method, not Parent's?
Because the child class defines its own greet method, it overrides the parent's version. See execution_table step 4 where Child#greet is called.
What if Child did not define greet method?
Then calling greet on child would run Parent's greet method, since child inherits it. This is shown by the absence of Child#greet in step 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4, which method is called when child.greet runs?
ABoth Parent#greet and Child#greet
BParent#greet
CChild#greet
DNo method is called
💡 Hint
Check the 'Evaluation' column at step 4 in execution_table
At which step is the child object created?
AStep 3
BStep 1
CStep 2
DStep 4
💡 Hint
Look at the 'Action' column for object creation in execution_table
If Child did not override greet, what would be the output at step 4?
A"Hello from Child"
B"Hello from Parent"
CNo output
DError
💡 Hint
Refer to key_moments about what happens if Child does not define greet
Concept Snapshot
Method overriding lets a child class replace a parent's method.
Define method in parent class.
Define same method name in child class.
Calling method on child runs child's version.
If child lacks method, parent's runs.
Used for customizing behavior in subclasses.
Full Transcript
This example shows method overriding in Ruby. First, a Parent class defines a greet method that prints a message. Then, a Child class inherits Parent and defines its own greet method, replacing the parent's. When we create a Child object and call greet on it, Ruby runs the Child's greet method, not the Parent's. This is method overriding: the child class changes the behavior of a method inherited from the parent. If the child did not define greet, calling greet on the child would run the parent's method instead. This lets subclasses customize or replace behavior from their parent classes.

Practice

(1/5)
1. What does method overriding in Ruby allow a child class to do?
easy
A. Prevent the parent class from being used
B. Create a new method with a different name
C. Change the behavior of a method inherited from the parent class
D. Automatically call all parent methods

Solution

  1. Step 1: Understand method overriding concept

    Method overriding means a child class uses the same method name as the parent but changes its behavior.
  2. Step 2: Identify the effect on behavior

    The child class method replaces the parent's method behavior when called on the child object.
  3. Final Answer:

    Change the behavior of a method inherited from the parent class -> Option C
  4. Quick Check:

    Method overriding = change inherited method behavior [OK]
Hint: Same method name in child changes parent method behavior [OK]
Common Mistakes:
  • Thinking overriding creates a new method with a different name
  • Believing it prevents parent class usage
  • Assuming it calls all parent methods automatically
2. Which of the following is the correct way to override a method named greet in a Ruby child class?
easy
A. class Child < Parent\n def greet_child\n puts 'Hello from child'\n end\nend
B. class Child < Parent\n def greet\n puts 'Hello from child'\n end\nend
C. class Child < Parent\n def greet() puts 'Hello from child' end\nend
D. class Child < Parent\n def greet: puts 'Hello from child' end\nend

Solution

  1. Step 1: Check method name matches exactly

    Overriding requires the child method to have the same name as the parent method, here 'greet'.
  2. Step 2: Verify Ruby method syntax

    Ruby method definitions use def method_name followed by body and end. Multi-line with indentation is standard. Parentheses are optional, but def greet() puts ... end is valid syntax if properly formatted. Colon syntax is invalid.
  3. Final Answer:

    class Child < Parent\n def greet\n puts 'Hello from child'\n end\nend -> Option B
  4. Quick Check:

    Same method name + correct syntax = override [OK]
Hint: Use same method name and proper def/end syntax [OK]
Common Mistakes:
  • Changing method name instead of overriding
  • Using incorrect method definition syntax
  • Adding colon after method name
3. What will be the output of this Ruby code?
class Parent
  def greet
    puts 'Hello from Parent'
  end
end

class Child < Parent
  def greet
    puts 'Hello from Child'
  end
end

obj = Child.new
obj.greet
medium
A. Hello from Child
B. Error: undefined method greet
C. No output
D. Hello from Parent

Solution

  1. Step 1: Identify class hierarchy and method overriding

    Child class overrides the greet method of Parent with its own version.
  2. Step 2: Determine which method is called

    Creating an instance of Child and calling greet calls the Child's version, printing 'Hello from Child'.
  3. Final Answer:

    Hello from Child -> Option A
  4. Quick Check:

    Child method overrides parent = Child output [OK]
Hint: Child instance calls overridden method, not parent's [OK]
Common Mistakes:
  • Expecting parent method output
  • Thinking no output occurs
  • Assuming method is undefined
4. Find the error in this Ruby code that tries to override a method:
class Parent
  def speak
    puts 'Parent speaks'
  end
end

class Child < Parent
  def speak()
    puts 'Child speaks'
  end
medium
A. Cannot override methods with parentheses
B. Method name should be different
C. Parent class must be declared inside Child
D. Missing end for Child class

Solution

  1. Step 1: Check class and method block endings

    The Child class is missing the closing end keyword to finish the class definition.
  2. Step 2: Confirm method overriding syntax

    The method speak is correctly named and defined; parentheses are allowed but optional.
  3. Final Answer:

    Missing end for Child class -> Option D
  4. Quick Check:

    Every class needs matching end [OK]
Hint: Count your end keywords carefully [OK]
Common Mistakes:
  • Thinking method name must change
  • Believing parentheses cause error
  • Confusing class nesting rules
5. Given this Ruby code, what will be the output?
class Animal
  def sound
    'Some sound'
  end
end

class Dog < Animal
  def sound
    super + ' and Bark'
  end
end

class Cat < Animal
  def sound
    super + ' and Meow'
  end
end

puts Dog.new.sound
puts Cat.new.sound
hard
A. Some sound and Bark\nSome sound and Meow
B. Some sound\nSome sound
C. and Bark\nand Meow
D. Error: super called incorrectly

Solution

  1. Step 1: Understand use of super in overridden methods

    Both Dog and Cat override sound and call super to get Animal's sound return value.
  2. Step 2: Combine parent and child method results

    Each child adds its own string to the parent's 'Some sound', resulting in 'Some sound and Bark' and 'Some sound and Meow'.
  3. Final Answer:

    Some sound and Bark\nSome sound and Meow -> Option A
  4. Quick Check:

    super adds parent method result [OK]
Hint: super calls parent method result to extend behavior [OK]
Common Mistakes:
  • Ignoring super and expecting only child string
  • Expecting error from super usage
  • Thinking output is only parent's string
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard