One thing, when you are project design is not 100% complete in requirement analysis phase i e you anticipate design changes at later stage of project life cycle then better to use Abstract class. Because say you need to add on method in you interface then you have implement that mathod in all the classes which are implementing that interface.
But in case of Abstarct class, every implementing class need not to implement that.
There are a lot of differenecs between them. A good article is on CP itself. Have a look Abstract Class versus Interface