Differences Between Abstract Class and Interface in Java
Abstract Class vs Interface in Java
To understand the differences between the abstract class and the interface in Java, it is important to, first of all, understand each of these independently. The abstract class in Java is used in declaration of subclasses with a set of common characteristics. The common use of the abstract class is a super class of other classes which, in effect, allows it to extend the abstract class. An abstract keyword is used in the declaration of an abstract class. Just as any other class would have, the abstract class has fields that describe methods and characteristics that the class can perform. By the mere declaration of an abstract class, the class cannot be initiated
A Java interface can be equated to a protocol. It represents a preset and agreed-upon behavior that allows for facilitation of the interaction of unrelated objects. Depending on the user, the interface holds the key to different actions being implemented. The interface, therefore, serves as a link between the producer and the consumer. Interfaces in Java are, thus, a group of methods containing empty bodies which may have constant declarations. In exposing a class to the Java interface, it means that the behavior expected of the class is the implementation of all methods of the interface.
First off, an abstract class allows for fields that are not static or final as opposed to the static and final fields used in interfaces. Interfaces cannot have any implementation code used in them, and there may be implementation code used in abstract class. The Implementation codes rolled out in the abstract class can have a few or all of the implemented methods. By default, all methods of the interface are “abstract.”
Visibility is also possible for methods or members of an abstract class which can vary such as public, protected, private, or none. The visibility of the interface, on the other hand, can only be preset to one mode of visibility which is “public.’”
An abstract class will automatically inherit the object class. This, in effect, means that methods such as clone () and equals () are included. In an interface, no inheritance of the object class is possible. Following this, the abstract class has the capability of having a constructor, but an interface cannot have one.
The interface in Java also has a very important function with the implementation of multiple inheritances since a class can only have one super class. Although only one super class can be present, it can be implemented in whatever number of interfaces. It is not possible to have multiple inheritances in an abstract class.
In performance, interfaces tend to be slower in implementation as opposed to abstract class mainly due to the extra direction of finding the corresponding method in a class. The difference, however, has become slower due to modern Java virtual machines that are continually being upgraded.
Adding a method in an interface requires you to track down all the implementing classes which implement the specific interface. Alternatively, you can extend the interface so as to allow it to have extra methods. If you happen to be dealing with an abstract class, all that is required is to add the default implementation of the method and the code continues functioning. Inasmuch as differences exist between abstract classes and interfaces, it is important to note that they are not rivals, but the differences mentioned herein serve to complement each other.
Abstract class fields are not static or final as opposed to interface which has static and final tables.
No implementation code can be used in interfaces while it can be used in abstract class.
Interface visibility can only be public while abstract class visibility can vary.
An abstract class will automatically inherit the object class, but it is not possible in interface.
Abstract class is faster than interface in implementation.
Search DifferenceBetween.net :
Email This Post : If you like this article or our site. Please spread the word. Share it with your friends/family.