Interfaces
Interfaces
Interfaces
2
▪ Selon la forme
Solides convexes
Parallélépipède
Cylindres Sphères
Cube
3
▪ Selon la matière
matiere
carbone
4
▪ D’autres critères qui pourraient servir à réaliser une
classification décrivent des comportements ou des capacités
▪ « électrique »
▪ « comestible »
▪ « lumineux »
5
Pour définir qu'une certaine catégorie de classes doit
implémenter un ensemble de méthodes, on peut regrouper
les déclarations de ces méthodes dans une interface.
Le but est de décrire le fait que de telles classes pourront ainsi
être manipulées de manière identique.
Exemple :
Tous les appareils électriques peuvent être allumés ou éteint
Tous les objets comestibles peuvent être mangés
Tous les objets lumineux éclairent
6
Une interface est donc la description d’un ensemble des méthodes
que les classes Java peuvent mettre en œuvre.
7
Mot réservé : interface
Dans un fichier nom_interface.java, on définit la liste de
toutes les méthodes de l’interface
interface nomInterface {
type_retour methode1(paramètres);
type_retour methode2(paramètres);
… }
8
Mot réservé : implements
La classe doit expliciter le code de chaque méthode définie
dans l’interface
… }
9
interface Electrique class Radio implements Electrique
{ {
void allumer(); // ...
void eteindre(); void allumer() {System.out.println(« bruit »);}
} void eteindre() {System.out.println(« silence »);}
10
// …
// …
if(sombre == true)
c = monAmpoule;
else
c = maRadio;
c.allumer();
…
c.eteindre();
// …
11
Une instance peut être définie selon le type d’une interface
Une classe peut implémenter plusieurs interfaces différentes
L’opérateur instanceof peut être utilisé sur les interfaces
Exemple :
interface Electrique
…
interface Lumineux
…
class Ampoule implements Electrique, Lumineux
…
Electrique e;
Object o = new Ampoule();
if (o instanceof Electrique) {e=(Electrique)o;e.allumer();}
12
Depuis les débuts de Java, il est possible d'utiliser l'héritage
multiple avec les interfaces.
L'héritage d'interfaces est possible depuis la version 1.0 de Java :
une interface ne peut contenir que la déclaration de constantes et de
méthodes mais elle ne contient pas leurs traitements
Exemple :
public interface MonInterface {
default void maMethode() {
System.out.println("Implementation par defaut");
}
}
14
Les méthodes par défaut proposent une implémentation par défaut qui sera
invoquée si la classe implémentant l'interface ne redéfinit pas explicitement la
méthode.
Une classe qui implémente une interface n'a donc pas l'obligation de redéfinir
une méthode par défaut. Si celle-ci n'est pas redéfinie alors c'est l'implémentation
contenue dans l'interface qui est utilisée.
Exemple :
public interface Service {
default void afficherNom() {
System.out.println("Nom du service : inconnu"); } }
Exemple :
public interface Service {
default void afficherNom() {
System.out.println("Nom du service : inconnu"); } }
16
Une méthode statique est un élément que l'on peut rencontrer dans une classe
normale. Un appel statique se fait au travers de la classe, il n'a besoin d'aucune
instance pour être exécuté. Java 8 autorise des méthodes statiques dans les
interfaces, qui obéissent aux mêmes règles que celles que l'on trouve dans les
classes abstraites ou concrètes.
17
interface I {
// Méthode statique
static void hello() {
System.out.println(" Je suis une méthode statique"); }
void afficher (String s);
}
19