📖 Scenario: Imagine you are creating a simple program to describe different types of vehicles. Each vehicle can describe itself, but some vehicles have special ways to describe themselves.
🎯 Goal: You will build a small Ruby program that shows how a child class can change the behavior of a method inherited from its parent class by overriding it.
📋 What You'll Learn
Create a parent class called Vehicle with a method describe that prints a general description.
Create a child class called Car that inherits from Vehicle.
Override the describe method in Car to print a more specific description.
Create objects of both classes and call their describe methods to see the difference.
💡 Why This Matters
🌍 Real World
Method overriding is used in many programs to customize or extend the behavior of existing code without changing the original code.
💼 Career
Understanding method overriding is important for working with object-oriented programming, which is common in software development jobs.
Progress0 / 4 steps
1
Create the parent class with a method
Create a class called Vehicle with a method describe that prints exactly "This is a vehicle."
Ruby
Hint
Use class Vehicle to start and def describe to define the method.
2
Create a child class that inherits from Vehicle
Create a class called Car that inherits from Vehicle.
Ruby
Hint
Use class Car < Vehicle to inherit from Vehicle.
3
Override the describe method in Car
Inside the Car class, override the describe method to print exactly "This is a car."
Ruby
Hint
Define def describe inside Car and use puts "This is a car.".
4
Create objects and call describe methods
Create an object vehicle of class Vehicle and an object car of class Car. Then call describe on both objects.
Ruby
Hint
Create objects with Vehicle.new and Car.new. Call describe on each.
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
Step 1: Understand method overriding concept
Method overriding means a child class uses the same method name as the parent but changes its behavior.
Step 2: Identify the effect on behavior
The child class method replaces the parent's method behavior when called on the child object.
Final Answer:
Change the behavior of a method inherited from the parent class -> Option C
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
Step 1: Check method name matches exactly
Overriding requires the child method to have the same name as the parent method, here 'greet'.
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.
Final Answer:
class Child < Parent\n def greet\n puts 'Hello from child'\n end\nend -> Option B
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
Step 1: Identify class hierarchy and method overriding
Child class overrides the greet method of Parent with its own version.
Step 2: Determine which method is called
Creating an instance of Child and calling greet calls the Child's version, printing 'Hello from Child'.
Final Answer:
Hello from Child -> Option A
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
Step 1: Check class and method block endings
The Child class is missing the closing end keyword to finish the class definition.
Step 2: Confirm method overriding syntax
The method speak is correctly named and defined; parentheses are allowed but optional.
Final Answer:
Missing end for Child class -> Option D
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
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.
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'.
Final Answer:
Some sound and Bark\nSome sound and Meow -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.