Let's go step by step. An Abstract Class lets a user define some or a few behaviours and requires or forces the subclasses to provide the remaining. An interface on the other hand is a contract or a specification that must be followed by concrete classes. There are several differences between the two. A code cannot be provided by an interface and all the methods have to be abstract. As for an abstract class, it is able to provide complete and/or just the details but it requires that at least one of the methods should be abstract. A class is able to inherit just one abstract class but it may inherit several interfaces. Interface is normally used where only method signatures are shared by various implements where as an abstract class is opted for where the implementations use common behaviour and are of the same kind.
Abstract Class can have any type of variables but Interface can have only final variables.
Abstract Class can have some/ total concrete methods whereas Interface cannot.
Both Interface and Abstract class cannot create Objects.