Ok, see if I understand your question ...
I think your concept is completely unaware of the differences and / or similarities between using interfaces and abstract classes. If this is a problem, then my resume is "starter for 10",
Abstract classes cannot be created , but they can contain implementation information , so when you derive a class from one, you get a contract and any default behavior that you put in an abstract class, for example, your Person class (I'll take its abstract class for this example) defines the contract that the derived class Employee or Manager should (at least) have, but can also provide some default behavior.
Interfaces on the other hand define only the contract ; that implementation classes must fulfill, they cannot provide any implementation method . For example, if the “Face” in your example was an infact interface, it should determine which classes implement it (Employee and Manager), but cannot provide a default implementation for this contract.
Also note that in many languages ​​(Java, C #, Delphi) you can inherit only one parent class, but you can implement many interfaces.
source share