After knowing what is an abstract class and interface in Java, let us summarize their differences. The differences Abstract class vs Interface given in a table format, at a single place, gives more clarity for a novice, attempting to learn Java.
Table on Abstract class vs Interface
|Supports multilevel and hierarchical inheritance but "not multiple inheritance" (main difference)||Supports all types of inheritances – multilevel, hierarchical and multiple.|
|Can contain concrete methods also apart abstract methods(important difference)||Must contain only abstract methods|
|Use "extends" keyword to inherit||"implements" keyword should be used|
|Access specifier of an abstract method can be any one except private||Access specifier must be public only|
|Access specifier like public and access modifier abstract should be mentioned||All the methods must be public and abstract and if omitted, taken by default|
|When few methods are to be given functionality, choose abstract class||When all the methods should not be given functionality, choose interfaces|
|Variables may be of any access specifier including private||Variables must be public, static and final; and if omitted, taken by default|
|One abstract class cannot extend more than one abstract class||One interface can extend more than one interface|
|Can have constructors||Can not have constructors|
Common functionalities (or similarities)
1. With the both, we cannot create objects but reference variables can be created.
2. Both support dynamic polymorphism.
Class vs Interface is also available.