An interface provides a contract that all implementing classes must meet. If a class is declared to implement an interface, then it must provide an implementation for each method defined in the interface.
An abstract class is similar in that it may declare abstract methods whose implementation is defered to child class(es). An abstract class cannot be instantiated. Sometimes it is useful to use abstract classes becausem unlike interfaces, you can include method implementations for no abstract methods that will be common to all child classes (assuming you don't override them).
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus