Very basic question but important to point out.
- Abstract classes can have concrete methods while interfaces have no methods implemented.
- Interfaces do not come in inheriting chain, while abstract classes come in inheriting chain.
- Interfaces have only pure virtual abstract method, while abstract classes may have non-abstract methods.
- All members are public [by default] in interfaces but you have to declare public members in abstract classes.