Maison >Java >javaDidacticiel >Méthode Java par défaut
Dans Java 8, un nouveau concept nommé méthode par défaut est introduit afin d'effectuer une compatibilité ascendante qui contrôle les expressions lambda par les anciennes interfaces. De plus, les interfaces sont autorisées à avoir des fonctions avec implémentation sans causer de problèmes aux classes dans lesquelles l'interface sera implémentée. Avant l'introduction de Java 8, seules les méthodes abstraites étaient autorisées par les interfaces. De plus, les fonctions devaient être proposées dans différentes classes. Dans les sections suivantes, la syntaxe, le fonctionnement et des exemples de la méthode par défaut seront expliqués.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Syntaxe
Vous trouverez ci-dessous la syntaxe d'une méthode par défaut.
public interface animal { default void sound() { System.out.println("This is a sample default method. . .!"); }}
Comme nous le savons, les interfaces telles que List et collections n'ont pas la méthode forEach. S’il est ajouté, la mise en œuvre du cadre des collections sera interrompue. Puisque la méthode par défaut est introduite dans Java 8, une implémentation par défaut peut être effectuée pour la méthode forEach. En plus de cela, une classe qui implémente 2 interfaces avec les mêmes fonctions par défaut peut être créée. Voyons comment l'ambiguïté du code est résolue.
public interface livingthings { default void sound() { . . . System.out.println("Living things too make noise . . .") ; } } public interface animals { default void sound() { . . . System.out.println("animals too make noise . . .") ; } }
Il existe deux solutions à cette ambiguïté.
1. Pour remplacer l'implémentation de la méthode par défaut, créez votre propre méthode.
public class dogs implements livingthings,animals { default void sound() { . . . System.out.println("dogs bark . . .") ;} }
2. En utilisant super, appelez la méthode par défaut
public class dogs implements livingthings,animals { default void sound() { . . . livingthings.super.print("dogs bark . . .") ; } }
En Java, normalement n interfaces peuvent être implémentées par une classe. De plus, une interface peut être étendue par une autre interface. Supposons qu'il existe deux interfaces pour une classe et qu'une méthode par défaut est implémentée ; la classe particulière peut être confuse dans le choix de la méthode à prendre en compte pour l'appel. Afin de résoudre ces conflits, les points suivants peuvent être effectués.
A.super.demo() ;
ou
B.super.demo() ;
Voyons maintenant quelques-unes des différences entre une méthode normale et une méthode par défaut
Lors de l'extension d'une interface composée d'une méthode par défaut, les opérations suivantes peuvent être effectuées.
Voici les exemples de programmes mentionnés :
Programme Java pour implémenter la méthode par défaut
Code :
//Java program to implement default method public class DefExample { //main method public static void main(String args[]) { //create an object for the interface animal Animals obj = new Dog(); //call the print method obj.print( ); } } //create an interface animal interface Animals { //default method default void print( ) { System.out.println("I have four legs. . . ! !"); } static void sound() { System.out.println("I used to bark alot!!!") ; } } //create an interface <u>carnivores</u> interface Carnivores { //default method default void print( ) { System.out.println("I eat non veg. . .! !") ; } } //class that implements the other two interfaces class Dog implements Animals, Carnivores { public void print( ) { //call the print method of Animals using super Animals.super.print( ) ; //call the print method of Carnivores using super Carnivores.super.print( ); //call the sound method of Animals Animals.sound(); System.out.println("I am a Dog . . .!"); } }
Sortie :
Explication : Dans ce programme, deux interfaces, Animaux et Carnivores, ont la même méthode par défaut print(), et elles sont appelées en utilisant super.
Programme Java pour implémenter la méthode par défaut
Code :
//Java program to implement default method interface Sampleinterface{ // Since this is declared as a default method, this has to be implemented in the implementation classes default void sammethod(){ System.out.println("a default method which is newly added to the program"); } // existing public as well as abstract methods has to be implemented in the implementation classes void oldmethod(String s); } public class DefExample implements Sampleinterface{ // abstract method implementation public void oldmethod(String s){ System.out.println("The string given is: "+ s); } public static void main(String[] args) { DefExample obj = new DefExample(); //call the default method obj.sammethod(); //call the abstract method obj.oldmethod("I am the old method in the program"); } }
Sortie :
Explication : Dans ce programme, une interface Sampleinterface est présente, et elle a une méthode par défaut sammethod(), et elle est appelée.
Dans Java 8, un nouveau concept nommé méthode par défaut est proposé pour effectuer une compatibilité descendante où les anciennes interfaces contrôlent les expressions lambda. De plus, les arguments d’interface n’ont pas d’état spécifique pour les méthodes par défaut. Dans cet article, la syntaxe, le fonctionnement et des exemples de la méthode par défaut sont expliqués en détail.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!