I am a PHP programmer and have been on many job interviews. I noticed that on each of them one question always came up.
That question is:
What's the difference between abstract class and interface?
The answer to this question is simple and proves the candidate's familiarity with object-oriented programming.
So let's compare these two:
Abstract class
- It can provide some functionality and leave the rest for the derived class.
- The derived class may or may not override the concrete functions defined in the base class.
- A child class extended from an abstract class should logically be related.
To declare class to be abstract just simply abstract
before class
keyword
Interface
- It cannot contain any functionality. It only contains definitions of the methods.
- The derived class MUST provide code for all the methods defined in the interface.
- Completely different and non-related classes can be logically grouped together using an interface.
To declare interface use interface
keyword
interface Template
{
public function setVariable($name, $var);
public function getHtml($template);
}
Top comments (0)