C'est mon premier message, il est donc facile de s'y habituer. Même si Java 9 est sorti, je pense que c'est Java 8 maintenant.
Tout d'abord, créez un IF avec StaticIF et la méthode par défaut.
package java8.staticIfAndDefaultIf;
/**
 *Pour tester StaticIF et les méthodes par défaut (étude de Java8)
 * @author komikcomik
 *
 */
public interface StaticIF {
	/**C'est la méthode par défaut*/
	public default void helloDefault() {
		System.out.println("hello Default");
	}
	/**C'est une méthode normale*/
	public void hello();
	/**Méthode statique*/
	public static void helloStatic() {
		System.out.println("hello static");
	}
}
Eh bien, il semble que les méthodes statiques puissent maintenant être implémentées dans IF comme ceci. Ce qui suit est l'implémentation de l'interface IF statique ci-dessus.
package java8.staticIfAndDefaultIf;
/**
 *Classe d'implémentation StaticIF.
 * @author komikcomik
 *
 */
public class StaticIFImpl implements StaticIF{
	@Override
	public void hello() {
		System.out.println("hello in Impl");
	}
}
Au fait, un autre. Cela a remplacé la méthode par défaut.
package java8.staticIfAndDefaultIf;
/**
 *Classe d'implémentation StaticIF.
 *Cela a remplacé la méthode par défaut.
 * @author komikcomik
 *
 */
public class StaticIFImplDefaultOverride implements StaticIF {
	@Override
	public void hello() {
		System.out.println("hello in ImplDefaultOverride");
	}
	public void helloDefault() {
		System.out.println("override default");
	}
}
Enfin, j'ai créé une classe pour appeler ces deux classes.
package java8.staticIfAndDefaultIf;
/**
 *Une personne qui appelle deux classes qui implémentent StaticIF.
 * @author komikcomik
 *
 */
public class StaticIFCaller {
	public static void main(String[] args) {
		StaticIF staticIF = new StaticIFImpl();
		staticIF.hello(); //Il en ressort qu'il a été implémenté avec StaticIFImpl.
		staticIF.helloDefault(); //La méthode staticIF dafault s'affiche.
		StaticIF.helloStatic(); //La méthode statique de StaticIF apparaît.
		StaticIF staticIF2 = new StaticIFImplDefaultOverride();
		staticIF2.hello(); //Il en ressort qu'il a été implémenté avec StaticIFImplDefaultOverride
		staticIF2.helloDefault(); //Le contenu de StaticIF a été remplacé et implémenté avec StaticIFImplDefaultOverride.
	}
}
Voici le résultat de l'exécution. C'est comme prévu.
hello in Impl
hello Default
hello static
hello in ImplDefaultOverride
override default
N'est-il pas possible que la méthode par défaut ne puisse pas être utilisée dans le cas où tout le même traitement est écrit à contrecœur dans une sous-classe qui hérite de IF? StaticIF ne semble pas très utile.
Recommended Posts