If you have ever studied or used Java, you must have come across the term Abstraction, which refers to the hiding of insignificant details and showcasing what is essential to the user. In other words, hiding the implementation of the feature and showing the functionality of the function to the user is Abstraction. There are two ways of applying abstraction to your code, Abstract Class and Interface.
The interface is similar to a class in Java, with its own methods and variables. The difference between a class and interface is that the methods declared in the interface are abstract by default. Interface only has method signatures, i.e. there is no body of the methods.
Abstract Class is a way to do abstraction in Java which doesn’t allow the class to create any objects of the class. The abstract class has at least one virtual function. You need to add an abstract keyword to make a class or a function abstract. As you can’t create any objects of an abstract class, you need to inherit the abstract class from another class to use the function of the abstract class.
While both Interface and Abstract Class are used for abstraction, they are still very different. Let us find out how do they differ from each other.
Also read: What’s the difference between C and C++?
Interface vs Abstract Class
- Methods: Abstract class can have both abstract and non-abstract methods with at least one abstract method necessary while Interface can have abstract, static, private and private static methods only.
- Implementation: Abstract Class can be used for the implementation of the Interface while the reverse is not possible. You can’t implement an Abstract Class using Interface.
- Types of Class Members: Abstract Class can have public, private, or protected class members, while the Interface members are public by default.
- Types of Variable: Variables in Abstract Class can be of the final, non-final, static and non-static type, while in Interface, the variables are always of static or final type.
- Multiple Inheritance: Abstract Class supports multiple inheritances while Interface can’t provide the ease of multiple inheritances to the user.
- Extensions: A Java Interface can only extend another Interface, while an Abstract Class can extend Java class and can implement multiple interfaces.
Both these features have different usage and provide solutions in different scenarios. Abstract Class can only get up to partial abstraction while Interface can provide a full abstraction to the programmer.
Hope you now know the difference between the two ways of implementing Abstraction to your code. Happy Coding!
Also read: Top 7 IDEs and Text Editors to code