Interface vs. Abstract Classes
Objective: Give a brief explaination of the difference
As you can see above, we have a simple Interface. Interfaces can be seen as a set of rules that classes must follow or they will throw an error. They are used to declare only, not assign as in declare a Health property and a Damage method will be used. All declared in an interface must be implemented in the inheriting class.
Abstract Classes on the otherhand can both declare and assign but it also allows you to override inherited methods by using virtual methods. Overriding can also be additive rather than removing all earlier implemeted logic. While overriding the base method, you can add back in the original logic using the base call followed by the additive or new logic.