Interface
is used for defining a contract. Abstract classes are used for defining some methods which are common to all descendants and possibly some methods which will differ(they will be abstract
). With interfaces
or abstract classes
polymorphism is reached.