This is a very important question for interviews at all levels.
Common differences to remember,
- An abstract class is a half defined class, Interface is fully abstract
- An abstract class does not provide full abstract implementation but the Interface does
- Multiple inheritances of an abstract class are not allowed but multiple interfaces are allowed
- An abstract class can contain a method with implementation and fields but Interfaces are only allowed to declare methods and properties.
- Access modifiers can be defined in an abstract class but Interface is by default public
- An abstract class and methods require Abstract keyword to declare whereas in Interface it is Interface
- In other words, an abstract class does not provide full abstraction but an Interface does
Common points to remember,
- We can not create an object of both Abstract class and an Interface
- An abstract class with all abstract member are similar to an Interface declaration