I had an interview where interviewer asked me first what is the difference between abstract class with all the methods abstract and an interface.
I replied that if
Here are the differences:
The answer to the question: "blah never extend blah implement contract blah" is this: "I would use an abstract class if I did needed instance variables and/or non-public methods and otherwise I would use an interface".