Both of these are used in the Java language to create the new reference types. But there is a fundamental difference between Interface and Class in Java. A class refers to a collection of various fields along with the methods operating on these fields. On the other hand, an interface consists of abstract methods (fully), i.e., the methods having nobody.
A class and an interface are somewhat similar syntactically. The difference is that we can instantiate a class but not an interface. Let us look at some more primary differences between Interface and Class in Java.
What is a Class in Java?
A class refers to a blueprint out of which we create individual objects. The classes in Java may consist of any of these variables given below:
- Local Variables: The variables that we define inside a method, a constructor, or a block are known as the local variables. These variables are declared as well as initialized within a method. Once the method has been completed, then the variable gets destroyed.
- Instance Variables: These are the variables that are present outside the methods but within a class. The initialization of instance variables occurs when a class gets instantiated. Also, one can easily access the instance variables from any constructor, method, or block belonging to the given class.
- Class Variables: These refer to the variables whose declaration occurs within a class but outside the methods- and these have a static keyword.
What are Interfaces in Java?
It is a reference type- very similar to the classes used in the Java language. An interface refers to a collection of various abstract methods. It is implemented by a class. It thus inherits the interface’s abstract methods.
Apart from the abstract methods, an interface may also consist of default methods, nested types, static methods, and constants. The method bodies only exist for the static methods and the default methods.
Writing a class and writing an interface is quite similar to each other. The difference is that the class would describe the behaviOr and the attribute of the given object. An interface, on the other hand, consists of the behaviors implemented by a given class.
Let us look at a few more differences between Interface and Class in Java.
Differences between Interface and Class in Java
Let us talk about the differences between Interface and Class in Java.
|Methods Supported||It may consist of both concrete methods as well as abstract methods.||It can only consist of abstract methods. But from Java 8, an interface may consist of both- static methods as well as default methods.|
|Support for Multiple Inheritance||It does not support multiple inheritances at all.||It totally supports multiple inheritances in Java.|
|Variables Supported||It provides support for non-final, final, non-static, as well as static variables.||It only permits and supports the final variables and static variables.|
|Implementation of an Interface||Any given class is capable of implementing an interface.||No interface can possibly implement an interface. It can only extend the given interface.|
|Declaration||We can declare a class with the help of the class keyword.||We can declare an interface with the help of an interface keyword.|
|Constructor||It may consist of some constructor methods.||It can not have a constructor at all.|
|Access||The members present in a class can be both- public, private as well as protected (to access).||An interface can consist of public members only for access.|
|Extension||It will only be able to access a class, but it can implement as many interfaces as we want.||It will be able to extend as many interfaces as we want it to, but cannot implement any of these.|