Bird
Raised Fist0
PHPprogramming~20 mins

Extending classes in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PHP Class Extension Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of extended class method call

What is the output of this PHP code?

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();
?>
ASome sound
BFatal error: Cannot redeclare method
CBark
Dnull
Attempts:
2 left
💡 Hint

Remember, when a child class defines a method with the same name as the parent, it overrides it.

❓ Predict Output
intermediate
2:00remaining
Output when calling parent method from child

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 is ready";
    }
}

$car = new Car();
echo $car->start();
?>
ACar started
BVehicle started and car is ready
CVehicle started
DFatal error: Call to undefined method
Attempts:
2 left
💡 Hint

Look at how parent::start() is used inside the child method.

❓ Predict Output
advanced
2:00remaining
Output when child defines method same as parent's private

What is the output of this PHP code?

PHP
<?php
class Fruit {
    private function taste() {
        return "Sweet";
    }
}

class Apple extends Fruit {
    public function taste() {
        return "Sour";
    }
}

$apple = new Apple();
echo $apple->taste();
?>
ASour
BSweet
CFatal error: Call to private method Fruit::taste() from context
DFatal error: Cannot override private method
Attempts:
2 left
💡 Hint

Private methods are not inherited or overridable; child can define its own method with the same name.

📝 Syntax
advanced
2:00remaining
Which code causes a syntax error in class extension?

Which of the following PHP code snippets will cause a syntax error?

A<?php class A { public function foo() {} } class B extends A { public function foo() { parent.foo(); } } ?>
B<?php class A { public function foo() {} } class B extends A { public function foo() { echo 'Hi'; } } ?>
C<?php class A { public function foo() {} } class B extends A { public function foo() { parent::foo(); } } ?>
D<?php class A { public function foo() {} } class B extends A { public function foo() {} } ?>
Attempts:
2 left
💡 Hint

Check how the parent method is called inside the child method.

🚀 Application
expert
3:00remaining
Determine the number of methods available in child class

Given the following PHP classes, how many methods can be called on an instance of Smartphone?

PHP
<?php
class Device {
    public function powerOn() { return "Powering on"; }
    protected function reset() { return "Resetting"; }
    private function secret() { return "Secret"; }
}

class Phone extends Device {
    public function call() { return "Calling"; }
    protected function reset() { return "Phone reset"; }
}

class Smartphone extends Phone {
    public function browse() { return "Browsing"; }
    private function secret() { return "Smartphone secret"; }
}

$phone = new Smartphone();
A4
B6
C5
D3
Attempts:
2 left
💡 Hint

Count the public methods that can be called directly on a Smartphone instance from outside: powerOn(), call(), browse().

Practice

(1/5)
1. What keyword is used in PHP to create a child class that inherits from a parent class?
easy
A. extends
B. inherits
C. implements
D. uses

Solution

  1. Step 1: Understand class inheritance in PHP

    PHP uses a specific keyword to let one class inherit properties and methods from another.
  2. Step 2: Identify the correct keyword

    The keyword to extend a class in PHP is extends, not inherits, implements, or uses.
  3. Final Answer:

    extends -> Option A
  4. Quick Check:

    Keyword for inheritance = extends [OK]
Hint: Remember: PHP uses 'extends' to inherit classes [OK]
Common Mistakes:
  • Using 'inherits' instead of 'extends'
  • Confusing 'implements' with 'extends'
  • Using 'uses' keyword incorrectly
2. Which of the following is the correct syntax to extend a class named Animal in PHP?
easy
A. class Dog extends Animal {}
B. class Dog inherits Animal {}
C. class Dog implements Animal {}
D. class Dog use Animal {}

Solution

  1. Step 1: Recall PHP class extension syntax

    To create a child class, PHP uses the syntax: class Child extends Parent {}.
  2. Step 2: Match the syntax with options

    class Dog extends Animal {} matches the correct syntax. The other options use incorrect keywords.
  3. Final Answer:

    class Dog extends Animal {} -> Option A
  4. Quick Check:

    Correct syntax uses 'extends' keyword [OK]
Hint: Use 'extends' keyword exactly after class name [OK]
Common Mistakes:
  • Using 'inherits' instead of 'extends'
  • Confusing 'implements' with 'extends'
  • Using 'use' keyword for inheritance
3. What will be the output of the following PHP code?
class ParentClass {
    public function greet() {
        return "Hello from Parent";
    }
}

class ChildClass extends ParentClass {
    public function greet() {
        return "Hello from Child";
    }
}

$object = new ChildClass();
echo $object->greet();
medium
A. Hello from Parent
B. Fatal error
C. Hello from Child
D. No output

Solution

  1. Step 1: Understand method overriding in child class

    The child class ChildClass overrides the greet() method of the parent class.
  2. Step 2: Determine which method is called

    When calling greet() on an instance of ChildClass, the overridden method in the child class runs.
  3. Final Answer:

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

    Child method overrides parent method [OK]
Hint: Child method overrides parent method with same name [OK]
Common Mistakes:
  • Assuming parent method runs instead of child
  • Expecting syntax error due to override
  • Thinking no output will be printed
4. Identify the error in this PHP code that tries to extend a class:
class Vehicle {
    public function start() {
        return "Starting vehicle";
    }
}

class Car Vehicle {
    public function start() {
        return "Starting car";
    }
}
medium
A. Class Car should not have methods
B. Method start() cannot be overridden
C. Class Vehicle should be abstract
D. Missing 'extends' keyword before Vehicle

Solution

  1. Step 1: Check class extension syntax

    In PHP, to extend a class, the child class must use the extends keyword.
  2. Step 2: Identify the missing keyword

    The code class Car Vehicle {} misses extends between Car and Vehicle.
  3. Final Answer:

    Missing 'extends' keyword before Vehicle -> Option D
  4. Quick Check:

    Extending requires 'extends' keyword [OK]
Hint: Always write 'extends' when inheriting a class [OK]
Common Mistakes:
  • Omitting 'extends' keyword
  • Thinking methods cannot be overridden
  • Confusing abstract class requirement
5. Given the following classes, what will be the output?
class Base {
    public function message() {
        return "Base message";
    }
}

class Derived extends Base {
    public function message() {
        return parent::message() . " and Derived message";
    }
}

class MoreDerived extends Derived {
    public function message() {
        return parent::message() . " plus MoreDerived message";
    }
}

$obj = new MoreDerived();
echo $obj->message();
hard
A. MoreDerived message
B. Base message and Derived message plus MoreDerived message
C. Base message
D. Fatal error due to parent call

Solution

  1. Step 1: Trace method calls through inheritance chain

    MoreDerived::message() calls parent::message(), which is Derived::message().
  2. Step 2: Understand Derived::message() call

    Derived::message() calls parent::message(), which is Base::message(), returning "Base message".
  3. Step 3: Combine returned strings

    Base returns "Base message"; Derived appends " and Derived message"; MoreDerived appends " plus MoreDerived message".
  4. Final Answer:

    Base message and Derived message plus MoreDerived message -> Option B
  5. Quick Check:

    parent:: calls chain methods up inheritance [OK]
Hint: parent:: calls chain up inheritance to combine outputs [OK]
Common Mistakes:
  • Ignoring parent:: calls and output only last method
  • Expecting fatal error from parent calls
  • Thinking only base method runs
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