Interfaces just got much better in Java 8

                            

We all know that Interface contains methods and variables, but the methods declared in an interface are by default abstract (only method signature nobody).If a class is implementing an interface it must provide method implementation of the methods in the interface, otherwise, the class must be declared as abstract.

Now imagine a situation where you want to add a new method to an interface later.Modifying one interface breaks all classes that implement the interface.which means adding a single method can break millions of lines of code.

In order to address this problem, Java8 introduced "Default Method" or Defender methods, which allows the user to enter a new method in the interface without breaking existing implementation of these interfaces.It provides flexibility to allow Interface define implementation which will use as default in the situation where a concrete Class fails to provide an implementation for that method.

Let's understand this with an example



When we extend an interface that contains a default method, we can perform following:-

  • Not override the default method and will inherit the default method
  • Override the default method similar to other methods we override in the subclass.
  • Redeclare default method as abstract, which force subclass to override it.

Some References 

  1. http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
  2. http://cr.openjdk.java.net/~briangoetz/lambda/Defender%20Methods%20v4.pdf

Comments

Popular posts from this blog

Automate File Classification with Apache Camel