📖 Scenario: Imagine you are creating a simple system for different types of vehicles. Each vehicle can describe itself, but some vehicles have special descriptions.
🎯 Goal: You will create a base class with a method, then create a child class that overrides this method to provide a special message.
📋 What You'll Learn
Create a base class called Vehicle with a method describe() that returns the string "This is a vehicle."
Create a child class called Car that extends Vehicle.
Override the describe() method in Car to return the string "This is a car."
Create an object of Car and print the result of calling its describe() method.
💡 Why This Matters
🌍 Real World
Method overriding helps customize behavior in different types of objects, like vehicles, animals, or employees, while sharing common features.
💼 Career
Understanding method overriding is essential for object-oriented programming, which is widely used in software development jobs to build flexible and reusable code.
Progress0 / 4 steps
1
Create the base class Vehicle
Create a class called Vehicle with a public method describe() that returns the string "This is a vehicle."
PHP
Hint
Use class Vehicle {} and inside it define public function describe() that returns the string.
2
Create the child class Car
Create a class called Car that extends Vehicle.
PHP
Hint
Use class Car extends Vehicle {} to create the child class.
3
Override the describe() method in Car
Inside the Car class, override the describe() method to return the string "This is a car."
PHP
Hint
Define public function describe() inside Car and return the new string.
4
Create Car object and print description
Create an object called $myCar of class Car and print the result of calling $myCar->describe().
PHP
Hint
Create the object with new Car() and use print() to show the description.
Practice
(1/5)
1. What does method overriding allow a child class to do in PHP?
easy
A. Change the behavior of a method inherited from the parent class
B. Create a new method with a different name
C. Prevent the parent class from being instantiated
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 to change its behavior.
Step 2: Identify what overriding does
It replaces or modifies the parent's method behavior in the child class.
Final Answer:
Change the behavior of a method inherited from the parent class -> Option A
2. Which of the following is the correct syntax to override a method named greet in a child class in PHP?
easy
A. function greetChild() { /* new code */ }
B. function greet() { /* new code */ }
C. override function greet() { /* new code */ }
D. parent::greet() { /* new code */ }
Solution
Step 1: Recall method overriding syntax
To override, define a method with the same name in the child class.
Step 2: Check options for correct syntax
Only function greet() { /* new code */ } defines function greet() correctly without extra keywords.
Final Answer:
function greet() { /* new code */ } -> Option B
Quick Check:
Same method name in child = override [OK]
Hint: Use same method name in child class to override [OK]
Common Mistakes:
Adding 'override' keyword which PHP does not use
Changing method name to something else
Trying to call parent method syntax incorrectly
3. What will be the output of this PHP code?
class ParentClass {
function sayHello() {
echo "Hello from Parent";
}
}
class ChildClass extends ParentClass {
function sayHello() {
echo "Hello from Child";
}
}
$obj = new ChildClass();
$obj->sayHello();
medium
A. Hello from ParentChild
B. Hello from Parent
C. Hello from Child
D. Error: Method not found
Solution
Step 1: Identify method overriding in ChildClass
ChildClass defines sayHello() which overrides ParentClass method.
Step 2: Check which method is called
Creating ChildClass object calls ChildClass's sayHello(), printing "Hello from Child".
Final Answer:
Hello from Child -> Option C
Quick Check:
Child method overrides parent = "Hello from Child" [OK]
Hint: Child method runs if overridden, not parent [OK]
Common Mistakes:
Expecting parent method output instead of child
Thinking both outputs print together
Assuming error due to method name clash
4. Find the error in this PHP code that tries to override a method:
class Base {
function show() {
echo "Base";
}
}
class Derived extends Base {
function show() {
parent.show();
echo " Derived";
}
}
$obj = new Derived();
$obj->show();
medium
A. Class Derived must declare show() as public
B. Cannot override methods in PHP
C. Missing return statement in show()
D. Incorrect syntax to call parent method; should use parent::show()
Solution
Step 1: Identify how parent method is called
The code uses parent.show() which is invalid syntax in PHP.
Step 2: Correct syntax for calling parent method
PHP requires parent::show() to call the parent's method inside child.
Final Answer:
Incorrect syntax to call parent method; should use parent::show() -> Option D
Quick Check:
Call parent method with parent::method() [OK]
Hint: Use parent::method() to call parent method inside child [OK]
Common Mistakes:
Using dot (.) instead of :: to call parent method
Thinking overriding is not allowed
Forgetting to call parent method when needed
5. Given these classes, what will be the output?
class Animal {
function sound() {
echo "Some sound";
}
}
class Dog extends Animal {
function sound() {
parent::sound();
echo " and Bark";
}
}
class Puppy extends Dog {
function sound() {
echo "Yip";
}
}
$pet = new Puppy();
$pet->sound();
hard
A. Yip
B. Some sound and Bark and Yip
C. Some sound and Bark
D. Error: Cannot override multiple times
Solution
Step 1: Trace method calls for Puppy object
Puppy overrides sound() and only echoes "Yip" without calling parent.
Step 2: Understand overriding chain
Since Puppy method does not call parent::sound(), Dog and Animal methods are not executed.
Final Answer:
Yip -> Option A
Quick Check:
Child override without parent call = only child output [OK]
Hint: If child method skips parent call, only child output shows [OK]
Common Mistakes:
Assuming all parent methods run automatically
Expecting combined outputs without explicit parent calls
Thinking multiple overrides cause errors
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.