What does the <code>final</code> keyword do when used with a class in PHP?
It prevents the class from being extended (inherited) by any other class. No child class can be created from a final class.
Click to reveal answer
beginner
What happens if you try to extend a <code>final</code> class in PHP?
PHP will throw a fatal error because final classes cannot be extended.
Click to reveal answer
beginner
What does the final keyword do when used with a method in PHP?
It prevents the method from being overridden in any child class.
Click to reveal answer
intermediate
Can a final method be declared in a non-final class?
Yes, a method can be declared final even if the class itself is not final. This means the method cannot be overridden, but the class can still be extended.
Click to reveal answer
intermediate
Why would you use final classes or methods in your PHP code?
To protect important classes or methods from being changed or extended, ensuring consistent behavior and preventing accidental overrides.
Click to reveal answer
What will happen if you try to extend a final class in PHP?
AThe class is extended successfully
BA fatal error occurs
CA warning is shown but code runs
DThe final keyword is ignored
✗ Incorrect
Final classes cannot be extended. Trying to do so causes a fatal error.
Which keyword prevents a method from being overridden in a child class?
Afinal
Bprivate
Cabstract
Dstatic
✗ Incorrect
The final keyword on a method stops child classes from overriding it.
Can a final method exist inside a non-final class?
AOnly if the class is abstract
BNo, methods cannot be final unless the class is final
COnly if the method is static
DYes, methods can be final even if the class is not
✗ Incorrect
Final methods can be declared inside non-final classes to prevent overriding.
What is the main reason to declare a class as final?
ATo allow multiple inheritance
BTo make the class abstract
CTo prevent the class from being extended
DTo allow method overriding
✗ Incorrect
Declaring a class final stops other classes from extending it.
If a method is declared final, what can child classes NOT do?
AOverride the method
BUse the method
CCall the method
DDeclare the method as static
✗ Incorrect
Final methods cannot be overridden by child classes.
Explain what a final class is and why you might use it in PHP.
Think about how final classes stop inheritance.
You got /3 concepts.
Describe the difference between a final class and a final method in PHP.
Focus on what each final keyword protects.
You got /3 concepts.
Practice
(1/5)
1. What does the final keyword do when used with a class in PHP?
easy
A. Prevents the class from being extended by other classes
B. Allows the class to be extended multiple times
C. Makes the class abstract
D. Allows the class methods to be overridden
Solution
Step 1: Understand the role of final with classes
The final keyword before a class means no other class can extend it.
Step 2: Compare with other options
Options A, B, and D describe behaviors that are opposite or unrelated to final classes.
Final Answer:
Prevents the class from being extended by other classes -> Option A
Quick Check:
final class = no extension allowed [OK]
Hint: Final class means no child classes allowed [OK]
Common Mistakes:
Thinking final class can be extended
Confusing final with abstract
Assuming final allows method overrides
2. Which of the following is the correct syntax to declare a final method in a PHP class?
easy
A. function final myMethod() {}
B. final function myMethod() {}
C. function myMethod() final {}
D. final myMethod function() {}
Solution
Step 1: Recall correct final method syntax
In PHP, the final keyword comes before the function keyword when declaring a final method.
Step 2: Check each option
final function myMethod() {} matches the correct syntax. Options A, C, and D have incorrect order or placement of keywords.
Final Answer:
final function myMethod() {} -> Option B
Quick Check:
final before function keyword = correct syntax [OK]
Hint: final keyword always before function name in declaration [OK]
Common Mistakes:
Placing final after function name
Writing final after function keyword incorrectly
Mixing order of keywords
3. What will be the output of the following PHP code?
final class Car {
final public function start() {
return "Engine started";
}
}
class SportsCar extends Car {
public function start() {
return "Sports engine started";
}
}
$car = new SportsCar();
echo $car->start();
medium
A. Engine started
B. Sports engine started
C. Fatal error: Cannot override final method Car::start()
D. Fatal error: Cannot extend final class Car
Solution
Step 1: Analyze class and method declarations
The class Car is declared as final, so it cannot be extended. But the code tries to extend it with SportsCar.
Step 2: Identify the error
Since Car is final, extending it causes a fatal error. But the question is about overriding a final method. Actually, the class is final, so extending is not allowed at all.
Step 3: Check options carefully
Fatal error: Cannot extend final class Car says cannot extend final class, which matches the error. Fatal error: Cannot override final method Car::start() says cannot override final method, which would be error if class was not final but method was final.
Final Answer:
Fatal error: Cannot extend final class Car -> Option D
Quick Check:
final class cannot be extended = fatal error [OK]
Hint: Final class cannot be extended, causes fatal error [OK]
Common Mistakes:
Confusing final method error with final class error
Assuming method override works despite final class
Ignoring that class is final and cannot be extended
4. Identify the error in the following PHP code:
class Vehicle {
final public function move() {
return "Moving";
}
}
class Bike extends Vehicle {
public function move() {
return "Bike moving";
}
}
medium
A. No error, code runs fine
B. Cannot extend class Vehicle
C. Cannot override final method move() in class Bike
D. Syntax error in method declaration
Solution
Step 1: Understand final method behavior
The method move() in Vehicle is declared as final, so child classes cannot override it.
Step 2: Check the child class method
The Bike class tries to override move(), which is not allowed and causes a fatal error.
Final Answer:
Cannot override final method move() in class Bike -> Option C
Quick Check:
final method cannot be overridden [OK]
Hint: Final method cannot be changed in child classes [OK]
Common Mistakes:
Thinking final method can be overridden
Confusing final method with abstract method
Assuming no error when overriding final method
5. You want to create a base class Document that cannot be extended, but you want to allow extending a method print() in child classes. Which is the correct approach?
hard
A. Do not declare class Document as final, and declare method print() normally
B. Declare class Document as final, and method print() normally (not final)
C. Do not declare class Document as final, but declare method print() as final
D. Declare class Document as final, and method print() as final
Solution
Step 1: Understand final class effect
Declaring a class as final prevents any extension, so no child classes can exist to override methods.
Step 2: Understand method overriding
To allow overriding print(), the class must be extendable and the method must not be final.
Step 3: Choose correct option
Do not declare class Document as final, and declare method print() normally allows extending the class and overriding the method. Options B and D prevent extension. Do not declare class Document as final, but declare method print() as final prevents method overriding.
Final Answer:
Do not declare class Document as final, and declare method print() normally -> Option A
Quick Check:
Allow extension and method override = no final on class or method [OK]
Hint: Final class blocks extension; omit final to allow overrides [OK]
Common Mistakes:
Declaring class final but expecting method override
Declaring method final when override is needed
Confusing final class and final method effects
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.