The only one difference between them is that an interface can't contain concrete(fully defined) methods where as an abstract class may contain them.
An abstract class not necessarily contain abstract methods. we can make a class as abstract class even it does not has any abstract methods.
When there is a need to write both abstract and concrete methods in a single unit we have to use an abstract class instead of an interface since an interface cant contain concrete methods.
All the fields(or properties) of an interface are by default 'static final' even when you don't mention explicitly. And all methods are 'public abstract'.
But in an abstract class we can have any type of fields and methods.
If a class has one abstract method ,the class has to be an abstract class.Methods can be implemented in abstract class.Whereas a interface is like a abstract class...the only difference being that the methods are never implemented in Interface.
Some difference between an interface and an abstract class are: a. All variables in an interface are public, static and final but that is not the case in abstract classes b. An abstract class can have both abstract and concrete methods but an interface cannot have concrete methods c. An abstract class can extend other classes and implement interfaces, while an interface can only extend other interfaces.
The difference are:An abstract class can have methods that actually have code inside them whereas an Interface cannot (An Interface can be thought of as a 100% pure abstract class)All variables in an Interface are public, static, final whereas that is not the case in Abstract classes
All the methods declared inside an Interface are abstract. Where as abstract class must have at least one abstract method and others may be concrete or abstract. In Interface we need not use the keyword abstract for the methods.
An interface can only have abstract methods or constants in it. A class can have both that and everything else in Java.
A more prcise description of difference is as follows.... an interface is a specification of a set of methods that the implementation class must adhere to, while an abstract class is indeed an implementation class albeit a class that is not concrete, i.e., one cannot directly instantiate an abstract class.
In general, the differences are that interface has(1) no fields and(2) no implementation of methodsbut in UML interface may have features (fields), so the difference left is that interface in UML has no implemented methods while abstract class by definition is partially implemented class.
Abstract class is to define "IS_A..." Interface is to define "Behave like ..." (not necessary to be a ...") An abstract class if with all public abstract methods may look just like an interface. An abstract class may also provide some implementation of those APIs (public methods), while an interface is to decouple (separate) the intend from the implementation
Some differences are:An abstract class can have code for one or more methods but an interface cannotAll variables in an interface are public static and final but in an abstract class it is notAbstract classes are faster than interfaces
Abstract classes and Interfaces are nearly similar with both having only method declarations and no implementations thereby giving their child classes the flexibility to implement them the way they want. Difference: While an abstract class can have method implementations also, an interface can have only declarations. All methods in an interface are only declared but in an abstract class you can declare as well as implement a few methods also.
An abstract class can have a combination of abstract methods and normal methods. Interfaces cannot implement any methods themselves, all have to be abstract. Other classes can extend only one class (abstract or not), but can implement as many interfaces as they want.
Below is the main difference between the 3 components:Concrete class - Provides implementation for all its methods & also for methods from extended abstract classes or implemented interfacesAbstract class - Does not provide implementation for one or more of its methodsInterface - Does not provide implementation for any of its methods