Interfaces in Java, Everything You Need to Know!

In this blog post we will be answering some of your most commonly asked questions when it comes to interfaces in java. So firsts things first, what is it?

An interface is a tool (much like a class) that is used to achieve abstraction AKA the art of taking human ideas/concepts and representing them in code, it works as a container that stores the method signature as well as its constants. It is one of the key concepts of Object Oriented Programming (OOP). In a nutshell it allows the developer to handle complexities within the program whilst hiding them from the user. As a software developer it is important to know how to implement interfaces for this very reason.


What must a class do in order to implement an interface?

In order for a class to implement and interface it would need to specify that it implements the interface and provide implementations for all the methods used in the interface. If these conditions are not met the compiler will display an error.


A commonly asked question is can you instantiate an interface?

Straight answer, no, it cannot be instantiated directly. Its members are implemented by the class.


Can you declare a constructor inside an interface?

Again, no. Java only allows public, static, final variables, public, abstract, private and private static methods. If you try to define a constructor in an interface you will run into a compile-time error.

So with that being said, what is the difference between an abstract class and an interface? 

The main difference is that an abstract class and an interface is that the class allows instance variables. See more examples of differences in the table below:


Abstract classInterface
1) Abstract class can have abstract and non-abstract methods.Interface can have only abstract methods. Since Java 8, it can have default and static methods also.
2) Abstract class doesn't support multiple inheritance.Interface supports multiple inheritance.
3) Abstract class can have final, non-final, static and non-static variables.Interface has only static and final variables.
4) Abstract class can provide the implementation of interface.Interface can't provide the implementation of abstract class.
5) The abstract keyword is used to declare abstract class.The interface keyword is used to declare interface.
6) An abstract class can extend another Java class and implement multiple Java interfaces.An interface can extend another Java interface only.
7) An abstract class can be extended using keyword "extends".An interface can be implemented using keyword "implements".
8) A Java abstract class can have class members like private, protected, etc.Members of a Java interface are public by default.
9)Example:
public abstract class Shape{
public abstract void draw();
}
Example:
public interface Drawable{
void draw();
}

https://www.javatpoint.com/difference-between-abstract-class-and-interface


So now that we understand interfaces, abstract classes and the difference between them,
what is an abstract method?

Simply put an abstract method is a method that is initialised without implementation which means is followed by a semicolon instead of brackets which would declare its parameters.


Lastly, can we override an interface method with visibility that is not public?

Simply put, no. Only if its visibility is public then can you override using the same method signature.

Hope this helped and cleared up any questions you may have had, till next time!

Comments

Popular posts from this blog

Concurrency, Everything you need to know!

LEARN TO CODE with HYPERIONDEV!