- Difference between an abstract class and an interface class
- Abstract classes are basically "incomplete" classes that hint towards what extending classes should be doing. It may or may not include implementation.
- Interface classes are basically a list of required methods that extending classes must implement. It doesn't include implementation.
- An abstract class is a contract between class/API developers, while an interface is a contract between class developers and API users.
Question: so what's the use of an interface class anyway?
- A class can only inherit a single class, but it can implement multiple interfaces.
- This is probably because an interface class contains no body; without a body, the diamond problem found in multiple inheritance (i.e., C++) doesn't arise.
- __autoload() is used to load a class' required external files.
- PHP5 classes are passed by reference (no need for $foo = &$bar probably).