$show=/label

What is the need for Default Methods inside Interfaces in Java 8

SHARE:

A quick guide to What is the need for Default Methods inside Interfaces in Java 8. What are the drawbacks of the interface before java 8? Example programs in both cases.

1. Overview


In this java 8 tutorial series, We'll be learning today why default methods are introduced in java 8 and why default methods are needed?


need for Default Methods inside Interfaces in Java 8

2. Interfaces Before Java 8 


Prior to Java 8, Every method present inside interface is always public and abstract whether we are declaring it or not.

package com.java.w3schools.blog.java.program.to.java8.defaultmethod;

public interface InterfacePriorJava8 {

 int method1();

 int method2();

}


This is a crucial interface and providing this to our clients. Assuming that we have 1000+ clients and all have been implemented these two methods in it as below.

package com.java.w3schools.blog.java.program.to.java8.defaultmethod;

public class ImplementationClass1 implements InterfacePriorJava8 {

 @Override
 public int method1() {
  System.out.println("class 1: method 1");
  return 0;
 }

 @Override
 public int method2() {
  System.out.println("class 1: method 2");
  return 0;
 }

}


public class ImplementationClass2 implements InterfacePriorJava8 {

 @Override
 public int method1() {
  System.out.println("class 2: method 1");
  return 0;
 }

 @Override
 public int method2() {
  System.out.println("class 2: method 2");
  return 0;
 }

}


public class ImplementationClass3 implements InterfacePriorJava8 {

 @Override
 public int method1() {
  System.out.println("class 3: method 1");
  return 0;
 }

 @Override
 public int method2() {
  System.out.println("class 3: method 2");
  return 0;
 }

}


..
..
..
..

public class ImplementationClass1000 implements InterfacePriorJava8 {

 @Override
 public int method1() {
  System.out.println("class 1000: method 1");
  return 0;
 }

 @Override
 public int method2() {
  System.out.println("class 1000: method 2");
  return 0;
 }

}

All of the above classes are completely valid because they all implemented both methods method1() and method2().

After some time, we realized that some of the clients need certain operations so now we planned to add the new method method3() in the interface InterfacePriorJava8 which has already two abstracts methods.

Adding new method method3().

public interface InterfacePriorJava8 {

 int method1();

 int method2();
 
 int method3();
}

After adding method3(), now all 1000 implementation classes must have to implement this third method. That means all these classes are affected and will not compile until adding the implementation method() with a valid logic or empty implementation. But, in the real world application, we can not impose this on all the clients.

Compile-time error:

The type ImplementationClass1 must implement the inherited abstract method InterfacePriorJava8.method3()

3. Default Methods in Java 8


So before java 8, it is impossible to extend the functionality of an existing interface without effecting implementation classes. JDK 8 Engineers addressed this issue and provided a solution in the form of Default methods, which are also known as Defender methods or Virtual Extension Methods.

So now changing the method3() to default and all implementation classes now no need to provide the implementation to method3() because it is declared as default so that all implementation classes have direct access to it. If the default behavior is not related then we need to override it.

public interface InterfacePriorJava8 {

 int method1();

 int method2();

 default int method3() {
  System.out.println("method3 is a default method.");

  return 1;
 }
}

Read complete article on "java 8 API default methods and static methods inside interfaces".

4. Conclusion


In this article, we have understood what is the significance of default methods in java 8 with a scenario-based explanation.

Hence, The main advantage of Default Methods inside interfaces is without effecting implementation classes we can extend the functionality of interface by adding new methods (Backward compatibility).




COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: What is the need for Default Methods inside Interfaces in Java 8
What is the need for Default Methods inside Interfaces in Java 8
A quick guide to What is the need for Default Methods inside Interfaces in Java 8. What are the drawbacks of the interface before java 8? Example programs in both cases.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHPuJa8N_onhYXs6GgR6Tlmi9cfpA9aBfjO1P0h8QQEKAv8s_TnlU7UTIAsg9_yOrVkAYJT-MwK-s_kavOexbucY_-lo7eIKKAJ18gVyFbEaIlf30jGp6oW6G3cNKDaRYsTtOgSx71IBU/s640/need+for+Default+Methods+inside+Interfaces+in+Java+8.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHPuJa8N_onhYXs6GgR6Tlmi9cfpA9aBfjO1P0h8QQEKAv8s_TnlU7UTIAsg9_yOrVkAYJT-MwK-s_kavOexbucY_-lo7eIKKAJ18gVyFbEaIlf30jGp6oW6G3cNKDaRYsTtOgSx71IBU/s72-c/need+for+Default+Methods+inside+Interfaces+in+Java+8.png
JavaProgramTo.com
https://www.javaprogramto.com/2019/12/need-interface-default-methods.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2019/12/need-interface-default-methods.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content