Interfaces
L'interface comme contrat de méthodes en Java : implements, plusieurs interfaces pour une classe, variable de type interface, choix entre interface et classe abstraite, méthode par défaut.
- 19 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Interface : de quoi s'agit-il ?
Voir la réponse
Liste de signatures de méthodes qu'une classe s'engage à fournir, sans imposer comment et sans exiger de lien de parenté.
Elle décrit ce qu'un objet sait faire, pas ce qu'il est. Une variable de son type peut désigner n'importe quel objet dont la classe la remplit.
Cette classe est refusée avec
Avion is not abstract and does not override abstract method atterrir() in Volant. Quelle correction est juste ?
```java
interface Volant {
void decoller();
void atterrir();
}
class Avion implements Volant {
public void decoller() { System.out.println("piste"); }
}`- Ajouter
public void atterrir() { … }dans Avion - Ajouter
void atterrir() { … }sanspublicdans Avion - Ajouter
extends Volantà la classe Avion - Déclarer
atterrir()enprivatedans Avion
Voir la réponse
Ajouter
public void atterrir() { … }dans AvionImplémenter, c'est fournir toutes les méthodes du contrat, publiques comme dans l'interface. Sans
public, ou enprivate, la visibilité est plus faible : refusé. Etextendsne s'applique pas à une interface depuis une classe.- Ajouter
Une classe déclare qu'elle remplit un contrat avec … ; elle peut en remplir …, séparés par des virgules.
Voir la réponse
Une classe déclare qu'elle remplit un contrat avec implements ; elle peut en remplir plusieurs, séparés par des virgules.
C'est ce qui contourne l'héritage simple :
class Canard extends Animal implements Volant, Nageurreprend une classe et deux contrats.Contrat : de quoi s'agit-il ?
Voir la réponse
Engagement d'une classe envers ceux qui l'utilisent : les méthodes qu'elle fournit, quelle que soit la manière dont elle les réalise.
Le code qui utilise le contrat ne dépend que de lui, pas des classes concrètes : on peut changer l'une sans toucher à l'autre.
Une méthode
lancer(Volant v)doit accepter Oiseau, qui hérite déjà d'Animal, Avion, qui hérite de Machine, et Drone. Que faire de Volant ?- Une interface que les trois classes implémentent
- Une classe abstraite dont les trois classes héritent
- Une classe qui hérite à la fois d'Animal et de Machine
- Rien : on écrit trois méthodes
lancersans lien entre elles
Voir la réponse
Une interface que les trois classes implémentent
Oiseau et Avion ont déjà une classe parente et Java n'admet qu'un
extends. Une interface, cumulable, donne la capacité commune à des classes sans lien, et un seullancersuffit.