Bird
Raised Fist0
PHPprogramming~20 mins

Method overriding in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Method Overriding Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of method overriding with parent call
What is the output of this PHP code when run?
PHP
<?php
class Animal {
    public function sound() {
        return "Some sound";
    }
}

class Dog extends Animal {
    public function sound() {
        return "Bark";
    }
}

$dog = new Dog();
echo $dog->sound();
?>
AError: Cannot override method
BSome sound
CBark
DNo output
Attempts:
2 left
💡 Hint
Look at which class's method is called when you create a Dog object.
❓ Predict Output
intermediate
2:00remaining
Output when calling parent method inside overridden method
What will this PHP code output?
PHP
<?php
class Vehicle {
    public function start() {
        return "Vehicle started";
    }
}

class Car extends Vehicle {
    public function start() {
        return parent::start() . " and Car ready";
    }
}

$car = new Car();
echo $car->start();
?>
AFatal error: Cannot access parent method
BCar ready
CVehicle started
DVehicle started and Car ready
Attempts:
2 left
💡 Hint
The overridden method calls the parent method and adds extra text.
🔧 Debug
advanced
2:00remaining
Identify the error in method overriding
What error will this PHP code produce when run?
PHP
<?php
class Base {
    private function show() {
        echo "Base show";
    }
}

class Child extends Base {
    public function show() {
        echo "Child show";
    }
}

$obj = new Child();
$obj->show();
?>
AOutputs: Child show
BOutputs: Base show
CFatal error: Cannot override private method Base::show()
DFatal error: Call to private method Base::show() from Child
Attempts:
2 left
💡 Hint
Private methods are not visible to child classes, so Child defines its own method.
📝 Syntax
advanced
2:00remaining
Which option causes a syntax error in method overriding?
Which of the following PHP code snippets will cause a syntax error?
A
&lt;?php
class A {
    public function test() {}
}
class B extends A {
    public function test() {
        parent::test();
        echo "Hi";
    }
}
?&gt;
B
&lt;?php
class A {
    public function test() {}
}
class B extends A {
    public function test() 
        echo "Hi";
    }
}
?&gt;
C
&lt;?php
class A {
    public function test() {}
}
class B extends A {
    public function test() {
        echo "Hello";
    }
}
?&gt;
D
&lt;?php
class A {
    public function test() {}
}
class B extends A {
    public function test() {
        return "Hi";
    }
}
?&gt;
Attempts:
2 left
💡 Hint
Check for missing braces or incorrect function syntax.
🚀 Application
expert
3:00remaining
Determine the final output with multiple overrides and parent calls
What is the output of this PHP code?
PHP
<?php
class A {
    public function message() {
        return "A";
    }
}

class B extends A {
    public function message() {
        return "B" . parent::message();
    }
}

class C extends B {
    public function message() {
        return "C" . parent::message();
    }
}

$obj = new C();
echo $obj->message();
?>
ACBA
BError: Cannot call parent method
CCAB
DABC
Attempts:
2 left
💡 Hint
Each class adds its letter and calls the parent's message method.

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

  1. Step 1: Understand method overriding concept

    Method overriding means a child class uses the same method name as the parent to change its behavior.
  2. Step 2: Identify what overriding does

    It replaces or modifies the parent's method behavior in the child class.
  3. Final Answer:

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

    Method overriding = change parent method behavior [OK]
Hint: Overriding means same method name, new behavior [OK]
Common Mistakes:
  • Thinking overriding creates new methods with different names
  • Confusing overriding with inheritance itself
  • Believing overriding prevents parent instantiation
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

  1. Step 1: Recall method overriding syntax

    To override, define a method with the same name in the child class.
  2. Step 2: Check options for correct syntax

    Only function greet() { /* new code */ } defines function greet() correctly without extra keywords.
  3. Final Answer:

    function greet() { /* new code */ } -> Option B
  4. 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

  1. Step 1: Identify method overriding in ChildClass

    ChildClass defines sayHello() which overrides ParentClass method.
  2. Step 2: Check which method is called

    Creating ChildClass object calls ChildClass's sayHello(), printing "Hello from Child".
  3. Final Answer:

    Hello from Child -> Option C
  4. 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

  1. Step 1: Identify how parent method is called

    The code uses parent.show() which is invalid syntax in PHP.
  2. Step 2: Correct syntax for calling parent method

    PHP requires parent::show() to call the parent's method inside child.
  3. Final Answer:

    Incorrect syntax to call parent method; should use parent::show() -> Option D
  4. 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

  1. Step 1: Trace method calls for Puppy object

    Puppy overrides sound() and only echoes "Yip" without calling parent.
  2. Step 2: Understand overriding chain

    Since Puppy method does not call parent::sound(), Dog and Animal methods are not executed.
  3. Final Answer:

    Yip -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard