Number one question on every PHP interview

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);
    }

    33

    This website collects cookies to deliver better user experience

    Number one question on every PHP interview