An abstract class in PHP is a class that cannot be instantiated on its own. It is meant to be a base class that other classes extend. It can contain abstract methods that must be implemented by child classes.
Click to reveal answer
beginner
What is an abstract method?
An abstract method is a method declared in an abstract class without a body. Child classes must provide their own implementation of this method.
Click to reveal answer
beginner
Can you create an object from an abstract class directly?
No, you cannot create an object directly from an abstract class. You must extend it with a child class and instantiate the child class instead.
Click to reveal answer
intermediate
Why use abstract classes and methods?
Abstract classes and methods help define a common template for related classes. They enforce that certain methods are implemented in child classes, ensuring consistent behavior.
Click to reveal answer
beginner
Example of declaring an abstract class with an abstract method in PHP?
Example:<br><pre>abstract class Animal {
abstract public function makeSound();
}
class Dog extends Animal {
public function makeSound() {
echo "Woof!";
}
}</pre>
Click to reveal answer
Which keyword is used to declare an abstract class in PHP?
Astatic
Binterface
Cfinal
Dabstract
✗ Incorrect
The keyword abstract is used to declare an abstract class in PHP.
What happens if a child class does not implement an abstract method from its parent abstract class?
APHP throws a fatal error
BThe code runs without errors
CThe child class will be abstract too
DThe method is ignored
✗ Incorrect
PHP throws a fatal error if a child class does not implement all abstract methods from its parent abstract class.
Can an abstract class contain non-abstract methods?
AYes, it can contain both abstract and non-abstract methods
BNo, all methods must be abstract
COnly static methods are allowed
DOnly private methods are allowed
✗ Incorrect
An abstract class can have both abstract methods (without body) and non-abstract methods (with body).
Which of these is true about abstract classes?
AThey can be instantiated directly
BThey cannot have properties
CThey can implement interfaces
DThey must have at least one abstract method
✗ Incorrect
Abstract classes can implement interfaces. They cannot be instantiated directly, can have properties, and do not have to have abstract methods.
How do you declare an abstract method in PHP?
Afunction methodName() {}
Babstract public function methodName();
Cpublic function methodName() {}
Dstatic function methodName();
✗ Incorrect
Abstract methods are declared with the keyword abstract and a visibility modifier like public and have no body, e.g., abstract public function methodName();.
Explain what an abstract class is and why you would use one in PHP.
Think about a blueprint that sets rules for other classes.
You got /4 concepts.
Describe how abstract methods work and what happens if a child class does not implement them.
Consider a promise that child classes must keep.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of an abstract class in PHP?
easy
A. To store data without any methods
B. To create objects directly without any child classes
C. To allow multiple inheritance in PHP
D. To provide a base class that cannot be instantiated directly
Solution
Step 1: Understand abstract class concept
An abstract class is designed to be a base class that other classes extend but cannot be instantiated on its own.
Step 2: Eliminate incorrect options
Options A, B, and D do not describe abstract classes correctly. PHP does not support multiple inheritance, and abstract classes cannot be instantiated directly.
Final Answer:
To provide a base class that cannot be instantiated directly -> Option D
Quick Check:
Abstract class = base class no direct objects [OK]
2. Which of the following is the correct way to declare an abstract method in a PHP abstract class?
easy
A. abstract public function myMethod();
B. public function myMethod() {}
C. function abstract myMethod();
D. public abstract myMethod() {}
Solution
Step 1: Recall abstract method syntax
In PHP, abstract methods are declared with the keyword abstract before the function signature and have no body (no curly braces).
Step 2: Check each option
abstract public function myMethod(); correctly declares an abstract method: abstract public function myMethod();. Options B and D have bodies or wrong order, and C uses incorrect syntax.
Final Answer:
abstract public function myMethod(); -> Option A
Quick Check:
Abstract method = abstract + no body [OK]
Hint: Abstract methods have no body and use 'abstract' keyword [OK]
Common Mistakes:
Adding curly braces {} to abstract methods
Wrong keyword order or missing 'abstract'
Trying to implement method body in abstract method
3. What will be the output of the following PHP code?
abstract class Animal {
abstract public function sound();
}
class Dog extends Animal {
public function sound() {
return "Bark";
}
}
$dog = new Dog();
echo $dog->sound();
medium
A. No output
B. Fatal error: Cannot instantiate abstract class Animal
C. Bark
D. Syntax error
Solution
Step 1: Understand class inheritance and method implementation
The abstract class Animal has an abstract method sound(). The class Dog extends Animal and implements sound() returning "Bark".
Step 2: Check object creation and method call
We create an object of Dog (which is allowed) and call sound(). This returns "Bark" which is echoed.
Final Answer:
Bark -> Option C
Quick Check:
Implemented abstract method returns 'Bark' [OK]
Hint: Only child classes can be instantiated, output from implemented method [OK]
Common Mistakes:
Trying to instantiate abstract class directly
Forgetting to implement abstract method in child
Expecting syntax error due to abstract method
4. Identify the error in the following PHP code:
abstract class Vehicle {
abstract public function startEngine();
}
class Car extends Vehicle {
// No implementation of startEngine()
}
$car = new Car();
$car->startEngine();
medium
A. Class Car must implement abstract method startEngine()
B. Cannot instantiate abstract class Vehicle
C. Method startEngine() should not be abstract
D. No error, code runs fine
Solution
Step 1: Check abstract method implementation
The abstract class Vehicle declares an abstract method startEngine(). The child class Car does not implement this method.
Step 2: Understand PHP rules for abstract methods
PHP requires all abstract methods to be implemented in child classes unless the child is also abstract. Since Car is concrete and missing the method, this causes an error.
Final Answer:
Class Car must implement abstract method startEngine() -> Option A
Hint: All abstract methods must be implemented in child classes [OK]
Common Mistakes:
Forgetting to implement abstract methods in child
Trying to instantiate abstract class directly
Assuming abstract methods can have bodies
5. Given the abstract class and two child classes below, what will be the output?
abstract class Shape {
abstract public function area();
}
class Square extends Shape {
private $side;
public function __construct($side) {
$this->side = $side;
}
public function area() {
return $this->side * $this->side;
}
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return 3.14 * $this->radius * $this->radius;
}
}
$shapes = [new Square(4), new Circle(3)];
foreach ($shapes as $shape) {
echo $shape->area() . " ";
}
hard
A. 62.82 61
B. 16 28.26
C. Error: Cannot instantiate abstract class Shape
D. 6 28.26
Solution
Step 1: Calculate area for Square
Square side is 4, so area = 4 * 4 = 16.
Step 2: Calculate area for Circle
Circle radius is 3, so area = 3.14 * 3 * 3 = 28.26.
Step 3: Understand output formatting
The code echoes each area followed by a space, so output is "16 28.26 " without newline.
Final Answer:
16 28.26 -> Option B
Quick Check:
Area calculations correct, output matches [OK]
Hint: Calculate each area, watch for spaces and no newline [OK]
Common Mistakes:
Confusing output formatting with newline
Trying to instantiate abstract class Shape
Incorrect area formulas
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.