Skip to content

Java #20 - interfaces

Séance 20 sur les interfaces en Java, expliquant leur différence avec les classes abstraites et leur usage pratique.

Key Takeaways

  • Les interfaces permettent de définir un contrat que les classes doivent respecter, sans implémentation de méthode.
  • Les classes abstraites servent à factoriser du code commun entre plusieurs classes étroitement liées.
  • Les interfaces facilitent l’extension des fonctionnalités (ex : capacité de voler) sans modifier la hiérarchie existante.
  • L’implémentation obligatoire des méthodes d’une interface garantit la cohérence du comportement des classes.
  • Les concepts d’interfaces et classes abstraites sont essentiels pour comprendre le polymorphisme en Java.

What the video covers

  • Introduction aux interfaces en Java, en continuité avec les classes abstraites vues précédemment.
  • Explication des différences entre classes abstraites et interfaces, avec exemples concrets.
  • Présentation d’une hiérarchie de classes avec véhicules (planeur, navire) et bâtiments.
  • Utilisation d’attributs communs comme la vitesse de déplacement dans les classes abstraites.
  • Démonstration de l’implémentation des méthodes abstraites dans les classes concrètes.
  • Exemple d’interface pour gérer la capacité de voler, permettant d’ajouter cette fonctionnalité à différentes classes.
  • Discussion sur la factorisation du code grâce aux classes abstraites et interfaces.
  • Mise en garde sur la répétition de code et comment les interfaces peuvent aider à éviter cela.
  • Présentation du contrat d’une interface et de l’obligation d’implémenter toutes ses méthodes.
  • Annonce de la prochaine séance sur le polymorphisme, qui utilise les concepts abordés.

Answers

Questions about this video

Quelle est la différence principale entre une interface et une classe abstraite en Java ?

Une classe abstraite peut contenir des méthodes avec implémentation et des attributs, tandis qu'une interface définit uniquement un contrat avec des méthodes abstraites que les classes doivent implémenter.

Pourquoi utiliser une interface pour la capacité de voler dans cet exemple ?

L'interface permet d'ajouter la fonctionnalité de voler à différentes classes sans modifier leur hiérarchie, en imposant un contrat commun pour cette capacité.

Que se passe-t-il si une classe ne respecte pas toutes les méthodes d’une interface ?

La classe doit obligatoirement implémenter toutes les méthodes de l'interface, sinon elle ne compilera pas, garantissant ainsi que le contrat est respecté.

Full Transcript — Download SRT & Markdown

00:15
Speaker A
Bonjour, bienvenue sur la séance 20 pour parler des interfaces en Java, une séance qui fait suite très directement à celle avec les classes abstraites, notion qu'on a vue précédemment, et on va compléter un petit peu en fait tout ce qu'on a vu.
00:28
Speaker A
ce qu'on a vu tout ce qu'on a vu justement concernant avec l'as abstraite pour vous parler un petit peu des interfaces et voir un peu ce qu'ils disent est en fait de la classe abstraite que verica pas forcément
00:37
Speaker A
Tout ce qu'on a vu justement concernant les classes abstraites, pour vous parler un petit peu des interfaces et voir un peu ce qu'elles disent en fait de la classe abstraite, que ce n'est pas forcément.
00:48
Speaker A
reprendre on va en tout cas partir sur un côté un peu un peu spécifique par rapport à ça que je vais vous détailler très simplement plus j'ai même un petit chemin pour vous puissiez comprend donc en gros à l'orangé montrait d'ailleurs
00:57
Speaker A
Énormément de choses, donc on peut du coup souvent confondre les deux, et on verra comme c'est un petit usage, je vous montrerai un usage un petit peu des interfaces qu'on peut retrouver.
01:08
Speaker A
et une qui va représenter un planeur ce sont des sortes de véhicules en qui on retrouve tout de suite ce lien comme ça donc cette hiérarchie liée à l'héritage justement de cette manière et d'un autre côté un autre côté donc là on n'est pas
01:20
Speaker A
Alors on va reprendre en tout cas, enfin on ne va pas reprendre, on va en tout cas partir sur un côté un peu spécifique par rapport à ça que je vais vous détailler très simplement. Plus, j'ai même un petit chemin pour que vous puissiez comprendre. Donc en gros, à l'orange, je montrais d'ailleurs.
01:32
Speaker A
parce que j'allais pas non plus faire 1 300 fichiers de classe différents mais toujours en faire juste quelques uns pour l'exercice fin pour le que vous ayez en tout cas ici un exemple ce suffisamment voilà suffisamment parlants et on a un cottage ans qui représentera
01:44
Speaker A
Ici, on va faire ça comme ça. Nous avons une classe abstraite, d'accord, qui représente un véhicule. Et de cette classe abstraite, nous avons étendu deux classes, créé deux classes : une qui représente un navire, un accord, un bateau,
01:55
Speaker A
classe abstraite est ici une classe toute seule mais j'aurais pu en crée deux trois quatre plein d'autres si j'avais voilà voulu pour compléter un peu plus donc en termes de cote ça se présente donc comme ça tout simplement
02:05
Speaker A
et une qui va représenter un planeur. Ce sont des sortes de véhicules dans lesquels on retrouve tout de suite ce lien comme ça, donc cette hiérarchie liée à l'héritage justement de cette manière. Et d'un autre côté, un autre côté, donc là on n'est pas
02:16
Speaker A
et a donc un seul une seule un seul attribut pardon chercher le nom qui est une vitesse de déplacement et on indique ici tout simplement une méthode abstraite recettes case quoi parle implémente pas ici qui va permettre de déplacer ce
02:28
Speaker A
du tout avec quelque chose qui est étroitement lié aux véhicules, c'est vraiment autre chose. Nous avons donc une classe, pareil, qui est abstraite, qui représente un bâtiment, une construction en fait, et issus de ça, alors j'en ai fait qu'une seule
02:40
Speaker A
bac la vitesse de déplacement c'est du kilomètre par heure par exemple et comme un bateau se déplace en eux et bien voilà en gros ici on a quelque chose qui déplacerait aux alentours de 9 noeuds donc ça correspond à un grosso
02:50
Speaker A
parce que je n'allais pas non plus faire 1 300 fichiers de classes différents, mais toujours en faire juste quelques-uns pour l'exercice, enfin pour que vous ayez en tout cas ici un exemple ce suffisamment, voilà, suffisamment parlant. Et on a un cottage, ans, qui représentera
03:00
Speaker A
texte qu'un dit voilà le navire la brasse c'est faux se déplace et il affiche les cordes pour le planeur évidemment donc lui barre au niveau de la construction il a une autre vitesse d'accord le déplacement papal en plus
03:10
Speaker A
pas une chaumière, donc une sorte de bâtiment en fait tout simplement, qu'ici concret, voilà un petit peu. Donc en termes de schémas, ce que ça représente, c'est qu'on a la classe étroitement liée via héritage sur une
03:23
Speaker A
dépassent pas paris naturellement comme ici un planeur et un navires sont étroitement liées à un accord par le fait d'accuser comme vous voyez ici un même état c'est à dire notamment leur vitesse de déplacement c'est un élément commun à ces deux
03:36
Speaker A
classe abstraite, et ici une classe toute seule, mais j'aurais pu en créer deux, trois, quatre, plein d'autres si j'avais, voilà, voulu pour compléter un peu plus. Donc en termes de code, ça se présente donc comme ça, tout simplement.
03:46
Speaker A
ce qu'on avait eu précédemment de la classe abstraite encore une fois ça permet de factoriser du code quand on trouve des liens étroits entre plusieurs classes et des éléments communs voilà c'est à ça que sert une casse abstraite et sasa qu'elle doit
03:57
Speaker A
Donc le véhicule, alors je vais aller très très vite, c'est des choses que nous avons déjà vues plein de fois. Et maintenant, au niveau des classes abstraites, on l'a abordée aussi, mais en gros, notre véhicule possède un seul ici,
04:11
Speaker A
autre classe a encore à part mais je voulais pas trop en rajouter donc j'ai mis à la place une chaîne de caractères pour me dire voilà on construit un pont construit donc un bâtiment selon un type de matériau
04:20
Speaker A
et a donc un seul, une seule, un seul attribut, pardon, chercher le nom, qui est une vitesse de déplacement, et on indique ici tout simplement une méthode abstraite, recette, case, quoi, parle, implémente pas ici, qui va permettre de déplacer ce
04:30
Speaker A
implémente bien évidemment la méthode qui à la base est abstraite par rapport à un certain type de matériau donc ça permettra de construire le bâtiment en flammes en bois en pierre ou n'importe quoi de cette manière j'espère qu'ici bon assez clair jusqu'à
04:44
Speaker A
véhicule à une position XY, d'accord. De là, notre navire est bien, quand on crée un navire, il a une vitesse par défaut qui est indiquée pour ceux qui en mangeraient entre les milices, image unique, destin pour l'exemple de me dire
04:55
Speaker A
vous êtes déjà perdu et maintenant donc imaginer que c'est la représentation un petit peu dans mon bonnement porte de mon projet et moi j'ai envie de faire un truc c'est de me dire on a ici un planeur monde est d'accord
05:06
Speaker A
bac, la vitesse de déplacement c'est du kilomètre par heure par exemple, et comme un bateau se déplace en eux, eh bien voilà, en gros ici on a quelque chose qui déplacerait aux alentours de 9 nœuds, donc ça correspond à un grosso
05:16
Speaker A
exemple un planeur je voulais simplement de jeu par fly or je ne sais pas comment mais bon voilà en gros il faut encore une certaine manière c'est un peu embêtant maintenant plus tard dans une évolution future je pourrais avoir un autre véhicule genre
05:33
Speaker A
modo 1 pour ce qui serait curieux, à dû 16 km à peu près. Et ensuite, le déplacement, donc là, bon, j'ai pas fait quelque chose de très simple pour votre exemple. Ici, j'ai simplement un
05:43
Speaker A
concrètes qui devrait voler aussi mais on a une répétition de code voyez y aurait le problème parce qu'on aurait ici la répétition du code fly pour ça et on aurait une répétition ailleurs donc la logique de la classe abstraite
05:56
Speaker A
texte, qu'un dit voilà, le navire, la brasse, c'est faux, se déplace et il affiche les coordonnées. Pour le planeur évidemment, donc lui, barre au niveau de la construction, il a une autre vitesse, d'accord, le déplacement papal en plus,
06:12
Speaker A
voit apparemment sont fait de savoir comment ça fait mais simplement comme ça mais là on terme d'implémentation là où on essaie de réaux de résoudre un problème on en a ajouté un nouveau c'est à dire que là on considère que tous nos
06:24
Speaker A
des places plus vite, un 28 km, c'est un planeur propulsé, notre rapide est pareil, comme ici au niveau des véhicules, nous avions une méthode abstraite, elle doit donc obligatoirement être implémentée dans les classes concrètes, puisque ici notre planeur baisse ne
06:37
Speaker A
nos bateaux vont voler c'est un petit peu embêtant si non des bateaux interne norbourg donc c'était pas sur les os on veut par bateau qui vole on n'est pas dans peter pan donc c'est un petit peu embêtant par
06:46
Speaker A
dépassent pas Paris naturellement, comme ici un planeur et un navire sont étroitement liés à un accord par le fait d'accuser, comme vous voyez ici un même état, c'est-à-dire notamment leur vitesse de déplacement, c'est un élément commun à ces deux
06:56
Speaker A
peut pas faire comme ça autre possibilité autre scénario là c'est tout ce que je viens de dire et si vous l'oubliez on prend un autre scénario d'accord que ce soit là ça venant de quelqu'un de l'extérieur par exemple où
07:06
Speaker A
classes et notamment moyens de se déplacer. Donc on a, et c'est pour ça que je te mangerais choisi, si j'utilisais pour ça, je voulais ouvrir une classe abstraite, et ensuite on crée comme ça des classes concrètes. Donc ça, c'est le principe, et
07:17
Speaker A
planeur on est d'accord il vole puis éventuellement bon bah mon l'ag que deux classes mais imaginer qu'il pourrait y en avoir beaucoup plus sain pour avoir pleins d'autres types de véhicules tout ça puis je me dis le bateau après tout
07:27
Speaker A
ce qu'on avait eu précédemment de la classe abstraite. Encore une fois, ça permet de factoriser du code quand on trouve des liens étroits entre plusieurs classes et des éléments communs. Voilà, c'est à ça que sert une classe abstraite, et ça, ça doit
07:35
Speaker A
chose un planeur qui vole en planeur autopropulsés par exemple qui du coup ne ferait pas que plane aimé volerait vraiment et on peut se rappelle d'ailleurs aussi de saisir mais moi j'ai un bien dans mon jeu me faire une maison
07:44
Speaker A
servir à côté pour building. Donc ici, pour représenter un bâtiment, une construction, gérer quelque chose de plus court, c'est simplement une méthode abstraite pour construire, d'accord, un bâtiment, et qui indiquera donc là, il aurait fallu éventuellement faire une
07:56
Speaker A
mais la chaumière puisque je représentais aussi par la classe cottage j'ai envie qu'elle vole d'accord je veux que ça ça vole comme un glider autour pulsé pourrait voler on pourrait d'ailleurs ici faire une classe spécialisée pour dire le glider donc le
08:08
Speaker A
autre classe à part, mais je ne voulais pas trop en rajouter, donc j'ai mis à la place une chaîne de caractères pour me dire voilà, on construit un pont, construit donc un bâtiment selon un type de matériau,
08:19
Speaker A
autre chose que ça veut dire que mon planeur jeu qui volent ou éventuellement le navire et je veux que mamie cima chaumières elle vole sauf qu'on a bien vu et en tout cas on voit ici au niveau du schéma que vous
08:31
Speaker A
d'accord. Et pour la chaumière ici, nous, ce qui représente une chaumière, donc on a le constructeur, donc je me dis voilà qu'on a une parcelle qui se met en place comme si on construisait, voilà, la mise en place de la parcelle, et on
08:42
Speaker A
absolument pas cohérent d'accord d'un point de vue on va dire liens étroits de se dire alors je vais pas forcément tous je vais pas forcément faire des rectangles juste noté du texte mais en bronze de dire par exemple qu'on aurai
08:54
Speaker A
implémente bien évidemment la méthode qui à la base est abstraite par rapport à un certain type de matériau, donc ça permettra de construire le bâtiment en flammes, en bois, en pierre ou n'importe quoi de cette manière. J'espère qu'ici, bon, assez clair jusqu'à
09:09
Speaker A
notre navire on va ensuite avoir notre chaumières comme ceci est mon pti bombe a pas de problème on sait faire ça va faire une classe abstraite flame et lemon ce sera une classe abstraite voilà on pourrait se dire ça on pourrait
09:21
Speaker A
présent. S'il y a des choses qui sont déjà pas claires à partir de là, revenez sur les vidéos d'avant concernant la construction d'une place, les méthodes, à la fin des classes abstraites, les attributs, les méthodes, il faut revoir toutes ces choses s'il a tout de suite
09:31
Speaker A
qu'on a c'est pas des choses étroitement liés nous parvenons à un accord pour dire qu une chaumière ici elle et c'est carrément différent d'un navire dans ce cas là et si on commence à tous liés au final on va se retrouver en fait avec
09:42
Speaker A
vous êtes déjà perdu. Et maintenant, donc, imaginez que c'est la représentation un petit peu dans mon bonnement porte de mon projet, et moi j'ai envie de faire un truc, c'est de me dire on a ici un planeur, monde est d'accord.
09:51
Speaker A
trouver un lien entre un planeur et une chaumié entre une construction et un véhicule si on veut on peut le trouver on peut toujours trouver un lien quelconque pas forcément cohérent mais il ya toujours moyen trop mal donc c'est pas possible
10:02
Speaker A
Un planeur, c'est quelque chose qui peut planer, donc en gros, c'est quelque chose qui peut entraîner mes volets, d'accord, qu'il y a possibilité de se déplacer dans les airs, on pourrait naturellement se dire bah ici, je vais permettre par
10:13
Speaker A
un navire s'est pas étroitement lié à un planeur donc la solution de la classe abstraite ne va pas et c'est là justement qu'intervient le sujet de cette durée de cette séance la les interfaces en gros et je vais déjà vous
10:26
Speaker A
exemple un planeur, je voulais simplement de jeu par fly or je ne sais pas comment, mais bon voilà, en gros il faut encore une certaine manière, c'est un peu embêtant. Maintenant, plus tard dans une évolution future, je pourrais avoir un autre véhicule genre
10:37
Speaker A
que je trouve que expliquer ça quelqu'un qui débute il ya ba voilà une interface à un claustra je pense qu'il ya plein de gens qui ne vont pas forcément comprendre le truc donc on va développer un peu plus
10:47
Speaker A
un avion, quelque chose qui représenterait un avion, les sauces passables, soucoupe volante, on le sait quoi, et il faudrait forcément plus permettre de voler. Donc est-ce qu'on s'amusera à faire, il en serait en train de créer une classe
10:57
Speaker A
comme ceux ci et on vous et en gros il ya tout un tas de choses qui sont indiqués là-dessus d'accord et on va dans un restaurant je pense que vous comprenez un peu le principe vous pouvez demander n'importe où n'importe quoi de
11:09
Speaker A
concrète qui devrait voler aussi, mais on a une répétition de code, voyez, il y aurait le problème parce qu'on aurait ici la répétition du code fly pour ça, et on aurait une répétition ailleurs. Donc la logique de la classe abstraite
11:20
Speaker A
ben tiens on vous fournit une liste de deux choses d'accord et vous choisissez là dedans et on va pouvoir nous pas en faire quelque chose et vous fournir ceci donc un contrat alors comment ça se fera en termes d'informatique en terme de
11:33
Speaker A
voudrait que quand on a comme ça des choses communes, d'accord, des liens étroits en fait, on utilise justement cette fameuse classe abstraite. Donc on serait tenté de dire dans la classe abstraite qui représente un véhicule, on va faire ça fly, et on
11:44
Speaker A
mot qui a l'air compliqué ne dis pas tiens salaires ça a l'air génial ici une api sert d'être un truc très compliqué n'est pas du tout une api en fait c'est une interface c'est un contre en gros on
11:55
Speaker A
voit apparemment, c'est fait de savoir comment ça fait, mais simplement comme ça. Mais là, en termes d'implémentation, là où on essaie de résoudre un problème, on en a ajouté un nouveau, c'est-à-dire que là on considère que tous nos
12:07
Speaker A
donc ça se passe voilà hockey et je vais l'appeler comme ceux-ci volant fly abbl je vais dire voilà je fournis un contrat qui dit voilà qu'on va pouvoir avoir quelque chose de volants mettant 7 encore une fois quand par exemple vous
12:23
Speaker A
véhicules que nous allons concrètement créer deux vont implémenter une méthode pour se déplacer, ça ok, et devront implanter une méthode pour voler. Le problème, c'est là, mon du cours devoirs, on part, on va voir, partir du principe que, bah, au navire, il sait, nous sommes
12:33
Speaker A
menu vous voulez un pavé de saumon aux tagliatelles peu importe comment de cuisine ils préparent il faut que ce soit bon ça c'est clair il faut que ce soit frais parce que c'est quand même mieux dans un resto est terminée
12:42
Speaker A
nos bateaux vont voler, c'est un petit peu embêtant, sinon des bateaux interne Norbourg, donc c'était pas sur les os, on veut pas de bateau qui vole, on n'est pas dans Peter Pan, donc c'est un petit peu embêtant par
12:53
Speaker A
moi je veux te fournit une api on va créer donc en outre qu'on est le développeur ici on va créer une interface en java ce que l'on parle de java qui est en fait une api l'accord pour créer quelque chose de vol on ne
13:04
Speaker A
rapport.
13:20
Speaker A
la up cette interface elle sera complètement a pas d'accord elle va avoir tout un tas de choses mais ça je vous expliquer ce que vous êtes du code donc parlement parle pas vraiment de code mais justin je schématise un peu la chose et tout
13:34
Speaker A
élément qui aura besoin d'implémenter ça comme fonctionnalité serre qui auraient besoin de voler d'accord d'être volant eh bien on va lui dire tu vas l'implémenter donc ça tombe bien ce que c'est exactement ce que j'ai donc si je
13:46
Speaker A
voulais schématiser en gros et j'irai d'un mois ici ma chaumières je veux qu'elle puisse voler donc elle va implémenter mon interface fleurier bbl d'accord et mon avenir ici alors c'est pas de l'héritage attention c'est l'implémentation mais bon ici
14:01
Speaker A
comme je pas forcément faire des flèches diffèrent différentes comme joue façon je vous parle en même temps que je fais les flèches vous comprenez bien ce que je veux dire et ça pareil mon avis il fait ça donc ça c'est vraiment une
14:12
Speaker A
interface est axé une sur couche d'abstraction ça veut dire dans te dis juste on va faire voler d'accord c'est y ait une interface pour permettre le vol mais sans forcément se poser la question de comment on va le faire parce qu'on est
14:25
Speaker A
d'accord qu'on fera pas voler un bâtiment comme on va faire voler un navire et on s'en fiche puisque c'est dans la classe du navire qu'on va implémenter cette interface qu'on va dire le navire pour voler pour être quelque chose de volant il va le faire
14:41
Speaker A
de telle manière et la chaumière elle va le faire de telle manière et si un jour parce que c'est important si la programmation j'ai encore une fois permet de ça elle sert à réutiliser le code et evo le faire évoluer le code
14:53
Speaker A
l'améliorer si un jour n'importe qui que ce soit vous en tant que développeur ou un autre développeur qui viendrait à reprendre votre code se dit bah moi ça y est je fais à une voiture un mettons il fait une
15:04
Speaker A
nouvelle classe ici voiture et je veux qu'elle puisse être une voiture volante il va il fera pareil ils diraient va ma voiture elle va implémenter d'accord mon corps et je pourrai le faire un jeu points marqués vous être chaud ici
15:14
Speaker A
et admettons voilà donc on va marquer voiture et il ya le gamin voiture n implémente cette interface aussi et il essayait de dire et lui en son code vous voyez donc a pas besoin de retouches à ce qu'il n'y a pas besoin de
15:25
Speaker A
toucher au code ici il n'y a pas besoin de toucher au code du véhicule ou je ne sais quoi c'est juste lui dans son propre code sans avoir à casser en fait le reste sans même savoir à la rigueur ce cas
15:35
Speaker A
dans le reste du code il dire d'avoir ma voiture mois elle vole et comment elles volent bas de telle manière et il le fera dans sa propre implémentation voilà le principe d'une interface d'accord c'est une couche d'abstraction qui établit en fait un contrat et que du
15:51
Speaker A
coup vous pouvez implémenté dans n'importe quelle classe accor n'importe quelle entité concept ses terres dans votre code qui auraient besoin de d'utiliser en fait cette fonctionnalité de se servir de cette api ici là pays c'est le fait d'avoir quelque chose de
16:05
Speaker A
volant quand on s'est un peu compliqué à expliquer ce que voulons et ce à un terme un peu un peu spécial alors pourquoi je les marque et de telle sorte en salle à flot et veulent simplement parce que java utilise un peu ce
16:13
Speaker A
principe d'action regarde la doc de java vous allez retrouver par exemple j'en utilise un qui est pas mal de la rotule à une classe qui s'appelle or ces basses et une interface en réalité mais c'est un peu à une classe et un peu spéciale
16:27
Speaker A
en fait un des interfaces pour ce que vous avez un petit peu puis j'ai le truc et on a ici une interface donc appartient java qui s'appelle comparables donc ça voyez tout de suite juste par le nom je pense que vous avez
16:36
Speaker A
compris à quoi allait servir cette interface je pense que vous avez bien compris que ça permet de savasse allait permettre de comparer des éléments les choses alors on n'a pas encore vu les temples et tout ça on n'a pas du tout
16:47
Speaker A
parlé encore sur ce coup mais en gros ça ça veut dire que cette interface elle va te permettre de comparer des éléments de n'importe quel type là et on ne sait pas d'avant se sait quels seront ces types
16:57
Speaker A
et c'est pas grave et si on va un petit peu plus loin dans cette doc on va trouver par exemple classe je sais pas moi de la classe doubnov c'est pour les nobles et nombre les nombres virgule calendar by fire on retrouve un
17:07
Speaker A
petit peu tous les types de données qu'est-ce qu'on retrouve aussi on retrouve des hits on retrouvera des choses concernant la manipulation date je sais pas s'il ya times par exemple ce genre de choses et du coup bas dans ces
17:20
Speaker A
classes qui vont implémenter interface on dira voilà un temps va le comparer de telle manière mais le temps on va pas le comparer comme des années on va pas non plus le comparer comme un nombre un bike on va
17:31
Speaker A
pas le comparer comme un doublon va pas le comparer comme un calendrier va pas comparer comme un caractère etc etc etc et peu importe nous tout ce qu'on veut savoir c'est juste qu'il ya une api qui nous dit que on va pouvoir ajouter une
17:43
Speaker A
fonctionnalité à n'importe quelle classe que l'on veut pour lui permettre comme ça de comparer des éléments voilà le principe dans ça c'était un exemple suffisamment parlant et en java alors dans d'autres langages pour indiquer le nom d'une interface on met souvent en
17:57
Speaker A
images du skull devant et ici en java vous remarquerez que les interfaces ont souvent le terme comme ça à la fin ils veulent quelque chose en fait ont ils veulent donc c'est un adjectif pour dire comparable clos nabeul c'est réalisable
18:11
Speaker A
comment dire que ça pète l'isi voilà retail lui diebold pour dire lysine par exemple et on retrouve un petit peut toujours se termine donc pourquoi on reste un petit peu dans les conventions de nommage de java c'est pour ça que
18:22
Speaker A
dans le schéma j'ai appelé ça fly à bhl pour dire volant la corse est un adjectif par rapport à ça alors ça c'est les explications ces schémas c'est bien beau maintenant en termes de cote comment ça se met en place
18:32
Speaker A
comment on met en place cette interface maintenant vous savez qu'il faut faire comme ça et que cette interface va mène deux à corriger ce problème qu'on avait montré tout à l'heure en là le fameux voilà la fameuse ici mais thad abstraite
18:43
Speaker A
fly qui du coup ils n'iraient pas du tout parce que ça voudrait ça nous obligerait en fait à rendre tout nouveau véhicule volant de cinq ans groupe si vous faites une moto faudrait qu'elle vaut aussi offert une voiture frais quel
18:52
Speaker A
vol et c'est pas du tout ce qu'on veut donc on va faire une interface donc une interface en fait c'est comme une classe quelques parents pas trop s'embêter là dessus alors on peut faire qu'est ce que je peux
19:04
Speaker A
comment je peux faire ça on va créer notre fichier je vais l'appeler bas flyball point classe un point java par votre métier pourquoi je voulais mettre points classement c'est pas n'importe quoi on voit que je mets dans mes fichiers de
19:20
Speaker A
classe 1 je laisse ça là dessus toujours d'un bon package j'ai dû avec un bon ce matin donc c'est dur ok et à partir de là il va y avoir des petits changements en termes de certains donc là on attaque vraiment un
19:33
Speaker A
syntaxe on n'est pas sur le terme classe qu'il faut bien qu'on puisse s différencier mais sur l'interface ici flyball par un petit peu comment ça se passe alors déjà une interface il faut savoir que il y a donc en termes de
19:52
Speaker A
syntaxe des règles importantes une interface c'est en termes de syntaxe seulement attention pas dans le comportement ou dans la manière dont tu doit s'en servir c'est pour ça qu'il faut pas confondre les deux mais juste en termes de syntaxe pur il vient une
20:06
Speaker A
interface s'est simplement fait une classe abstraite dont toutes les méthodes en fait sont abstraites d'accord certes ya pas de méthode qu on dirait qu'ils seraient déjà implémentées au genre de choses même s'il ya une petite exception depuis la version 8 de
20:19
Speaker A
java mais on va en parler sur sur la séance donc en gros tout est public et tout abstrait par défaut donc vous n'avez pas besoin de mettre le mot clé abstract pour aux méthodes et vous n'avez pas besoin non plus mais bon ça peut
20:30
Speaker A
toujours bien de le mettre sous l'indicatif le mot clé publique d'accord moi par exemple je mettrais juste publiquement mais pas de façon c'est assez rare qu'on mette le mot club grec dans les interfaces mais si vous voulez le mettre là pas de problème si pour
20:40
Speaker A
vous c'est plus compréhensible de faire comme ça pour être sûr que vous compreniez chose mettez le à aucun problème avec ça et comment ça fonctionne et bien dans cette interface je vais dire voilà bon ben on aura différentes choses donc différentes
20:52
Speaker A
méthodes d'accord différents comportements qui vont permettre et bien de faire voler on sait pas quoi ça peut être vous voyez au final on pourra faire voler à une chaumière un navire peut-être une moto ce qu'on veut en fait on peut importe donc moi je
21:04
Speaker A
vais rester sur quelque chose très simple parce que pour un bonbon je peux pas faire quinze mille exemples non plus mais je vais juste dire voilà j'ai une méthode fly voilà leurs feuilles comment ça peut être par exemple je sais pas mme
21:13
Speaker A
on peut utiliser en justice des chaînes de caractères parce que je veux pas créer une place non plus les genres quelque chose qui représenterait une énergie pour pouvoir voler et c'est tout mon interface est terminée d'accord alors une interface pour information
21:26
Speaker A
comme une classe abstraite peut étendre une autre classe abstraites comme je l'avais gagné sur la séance précédente une interface peut étendre une autre interface pour cela il faudra utiliser comme pour les classes le mot-clic externe d'accord voilà donc si vous avez
21:38
Speaker A
une hiérarchie d'interface comme on aurait une hiérarchie de classe vous utilisez comme pour les classes walk l'extase par contre dès qu'une classe doit utiliser une interface donc l'implémenter obligatoirement il faudra utiliser le mot clé implement donc ça c'est ça oui même si c'est des mots
21:54
Speaker A
anglais s'est facilement lisible même pour nous français francophones c'est facile de quitter ces termes donc maintenant comment je gère implémente en fait cette interface comment je me dis pas voilà je veux rendre ici mon navire volant m'a regardé
22:06
Speaker A
c'est très très simple en termes de cote c'est juste ça je gère mon véhicule ici donc on met tout ce qui est extension d'abord c'est important faut toujours mettre l'extension d'une classe d'ailleurs en java et parce qu'il ya des
22:18
Speaker A
langages qui font exception mais on ne peut pas faire d'héritage multiples ça veut dire qu'une classe elle peut en attendre qu'une seule on peut pas avoir une classe par exemple qui hérite de deux trois quatre et plus de classe n'a
22:30
Speaker A
qu'une seule par contre et c'est aussi l'avantagé de l'interface c'est qu'une classe elle peut implémenter autant d'interface que vous voulez donc on peut faire de l'implémentation multiples d'interface et on l'aimé toujours en dernier pour qu'on fait implement et là
22:44
Speaker A
vous mettez tous les noms d'interface que vous voulez donc la bonne manière fiable s'il y en avait un autre vous remettra une virgule et puis autre chose je fais pas on pourrait par exemple dire n'importe quel autre interface comme ça
22:54
Speaker A
vous voulez séparées par des virgules et c'est tout ça c'est la syntaxe pour dire mon navire 20 implémenter l'interface fly et veulent par contre comme ça aurait plus rien et implémenter est ce que c'est le principe d'une interface il ya donc une implémentation
23:09
Speaker A
tout cas ici on verra après encore une fois qu'à une petite exception pour terminer la vidéo est bien va falloir l'implémenter le dire moi c'est bien on a vu qu'ici tu as dis bon bah tu voulais que tout navire que ton avis revol
23:19
Speaker A
maintenant faudrait peut-être que tu nous explique comment il vole quand je dis fois qu'une explique c'est le compilateur ivars besoin de dire de savoir comment on va faire voler un avion donc comme bonne classe abstraite pour honorine du coup une classe
23:31
Speaker A
concrètes où il faudrait à implémenter les méthodes sastre est ici on implémente les méthodes abstraite de l'interface pour dire voilà le navire il va voler comme ça pour que où l'on va mettre un petit texte simple pour faire
23:42
Speaker A
quelque chose de pas trop compliqué m par exemple je mets propulse avec du et puis hambourg est bon par exemple ou de l'énergie je vais très très simple en terme de d'exemple ici pour le code je peux en
23:57
Speaker A
faire plus je pense qu'à un texte est suffisamment explicite pour cent et voilà c'est bon vous avez implémenter le vol pour votre véhicule et vous voyez je n'ai jamais eu besoin de toucher à ça jamais besoin de toucher à quoi que ce
24:09
Speaker A
soit c'est juste si j'ai un élément ou jeudi celui-là cet élément là cette classe je veux qu'elle puisse voler d'accord c'est que mon avis un pistolet et bien c'est lui voilà que je modifie et c'est un moment donné bas là on a besoin d'en rajouter
24:22
Speaker A
d'autres possibilités mais on rajoutera une autre méthode franchement on pourra dire par exemple comment on peut dire ça booste je crois par les intrus qui permettraient de booster la vitesse et puis on trouve par exemple rajouter un jeu pas moins un
24:36
Speaker A
multiplicateur de vitesse voilà in te dire quelque chose un multiplicateur peu importe pour dire bah tiens je booste la vitesse par 2 par 3 par 10 etc et voilà et ici bas à ce partir de là on ne change en un peu en changeant de
24:49
Speaker A
l'interface il faudra évidemment l'implémenter tabac alors ton navire commet lui ce boost comme les hiboux sa vitesse et si tu veux que tu as chaud mire est le vol comment elle booste rsa vitesse d'accord c'est important c'est partiellement ou
25:00
Speaker A
si vous avez différentes méthodes il faut comme pour les classes abstraite obligatoirement que ce qui les implémente comment dire implémentée toutes ces méthodes c'est obligatoire roxy a dit méthode dans votre interface il faudra implémenter dit méthode dans chaque
25:15
Speaker A
classe qui implémentent cette interface très important de toute façon si vous n'êtes pas vous aurez une erreur à la compilation de cons rappellera j'avais en tout cas vous le rappellera très très vite donc c'est pas tout c'est pas fini ici il faut pareil
25:26
Speaker A
je vais faire un petit copier coller est ce que vous savez voilà on aime bien faire des copier coller en informatique parce que ben voila c est le cas d'utiliser aussi beaucoup très sain possible regardez mâchon bien je veux qu'elle
25:38
Speaker A
vole eh bien je lui ai implémente l'interface pour voler donc pour plus dans les airs avec quelque chose on verra comment du coup alors on va virer peut-être on va juste faire ça c'est exemple la taxe et on va les faire voler c'est parti on
25:54
Speaker A
va faire voler notre chaumien on va il est très simple on va faire ça qu'est-ce qu'on peut mettre par exemple c'est un peu bizarre l'un peut mettre je suis pas franchement j'ai pas d'idée en terme de deux noms pour l'énergie ça peut être je
26:06
Speaker A
suis pas moi du j'ai franchement pas dit d aller au carbone on va dire ou carbone a créé dire ça comme ça et le navire la flight en acadie en lui son énergie c'est de la magie voilà c'est du mana 1
26:19
Speaker A
c de la mana comme dans les jeux vidéo voilà c'est quelque chose de magique c'est la mana qui lui permet de voler et voyez j'ai c'est tout on fait juste ça j'ai pas besoin de donner 10 rebonds bas
26:28
Speaker A
le véhicule enfin changer parce que comme machi ponte d'accord c'est une sorte de véhicule donc vous pourrez se dit ravi du coup véhicules folie indiqué qu' il peut éventuellement volume et non parce que tous nos véhicules on veut pas qu'ils volent ou qui a
26:39
Speaker A
aucune raison de tout chasse mais comme il ya des cas des exceptions où on veut que ça vole et bien on passe par une interface voilà donc on a du coup on a plus en tout cas ce problème qu'on pouvait avoir
26:49
Speaker A
avec les classes abstract d'accord et n'oubliez pas d'appeler une classe pendant paiement t plusieurs interfaces donc ça veut dire vous pouvez du coup rajouter plein de fonctionnalités à vos classes en implémentant toute hâte à interface comme vous le voulez d'accord
27:02
Speaker A
ça près d'hambourg plein de choses donc on va quand même compliqué pour montrer qu un jour dit pas de bêtise ça marche voilà puis voir sied pas fait de bêtise j'ai fait une bêtise voilà évidemment il notre public et nous demander c'est quoi
27:14
Speaker A
flying public est ce que j'ai mis comme bêtises de l'ied c'est comme des fois je fais des ah oui je suis bien sûr bah ouais t'as raison brésil fait n'importe quoi regarder voyez c'est le copier-coller très attention ce qu'après quand on voit
27:28
Speaker A
de copier qu'il ya déjà une faute dans ce que vous copier coller dommage c'est dommage faut pas faire ça oui c'est un parce que j'ai oublié la majuscule et voilà donc la parcelle en place c'est le la construction de la
27:43
Speaker A
chaumière je ne prends plus dans les arrêts du carbone donc ça c'est la chaumière qui est en train de voler et sa basse et le navire et ça fonctionne white ou volent pas de problème et si demain je veux
27:53
Speaker A
rajouter un nouveau bâtiment ou un nouveau véhicule et que je veux qu'ils volent et bien pas de problème sexy a rien qui change par rapport à la manière de voler en tout cas ce contrat à cette interface eh bien je crée une classe concrètes qui
28:06
Speaker A
hérite de la classe abstraite qui a des couettes un qui a des liens avec elle si c'est un véhicule jeu faut que ça irrite de véhicules si c'est une sorte de bâtiments il faut que ça irrite de buildings et si je veux que ça vole
28:15
Speaker A
hebinger implémente tout simplement l'interface fiable et c'est terminé j'ai pas besoin de toucher à quoi que ce soit d'autre par rapport à ça voilà si vous avez compris ce que j'ai dit jusqu'à présent ce que c'est que la
28:26
Speaker A
vidéo pour le coût va être un petit peu long quand même cela ce qui est beaucoup de choses a expliqué vous avez déjà compris 99% des interfaces en programmation de manière générale y compris sur d'autres langages parce que
28:37
Speaker A
le principe encore une fois ce sont des notions élémentaires qui fonctionne de la même manière sur d'autres langages après ce qui va changer selon le langage c'est la syntaxe ou comment fonctionne dès fois les accès aux autres d'un
28:48
Speaker A
langage à l'autre donc ça fait attention selon langages de programmation il ya des choses qui diffèrent mais la notion elle est là d'accord à quoi sert une interface c'est ce que je ne vous dirais bien c'est exactement pareil pour le c++
28:59
Speaker A
ou d'autres langages qui peut voir par exemple des interfaces tout à fait pareil d'accord il ya vraiment pas différence de ce côté là du coup du coup du coup est ce que je vous ai par exemple on va repartir sur
29:16
Speaker A
l'exemple de java java possède pas mal d'interface comme par exemple là pour copier des objets accord copier des éléments pour les comparer pour tous à aider qu'abc on veut avoir une classe et c'est comme ça que fonctionne en face il
29:27
Speaker A
faut vous dire que le langage java il est conçu comme ça en fait il est conçu avec plein d'interface plein de classe abstraite et du coup tout est fait toute la logique du langage avec toutes les classes que vous allez utiliser du
29:36
Speaker A
langage sont construits de cette manière donc si à un moment donné vous voulez par exemple pouvoir comparer des éléments d'une classe que vous avez créés bien il faudra soit faire votre propre interface si c'est bien quelque chose de spécifique
29:46
Speaker A
s'ils n'ont pas tout simplement implémenter l'interface de java qu'on parle et c'est tout qui permettra dans la passe du thé ici de comparer des dates des maisons des navires oui on peut comparer plein de choses parce qu'évidemment en termes de code pur
30:00
Speaker A
comparer des bateaux c'est pas si simple que ça ça c'est vraiment humain il faut réfléchir et maintenant parlons à comment on compare par exemple de navires ok pour ça alors un autre élément aussi puisque vous avez dit qu'une à une interface en termes de
30:12
Speaker A
syntaxe pur c'est une classe abstraite mais qui ne possède que des choses abstraites d'accord donc en gros il y aura jamais d'implémentation de quoi que ce soit dans tous les cas une interface voyez ne se comment dire ne se ne s'intensifie
30:24
Speaker A
pas c'est pas une classe en plus un c'est dans le cas là donc évidemment pas de constructeur dans une interface en comme pour une classe abstrait on ne fait pas d'instance d'une interface évidemment temps par contre il ya un
30:35
Speaker A
élément très important quand on avait vu que la classe je vous avais dit la classe abstraites en tout cas permet donc de factoriser du code c'est à dire de quand on a des éléments communs avec des classes étroitement liés on crée une
30:48
Speaker A
abstraction d'accord pour faire justement cette fameuse casse abstraite et on pouvait utiliser des éléments non statique on pouvait utiliser des choses qui ne sont pas constantes on peut par exemple avoir des attributs jeu pas moi protégé où ce genre de chose par contre
31:01
Speaker A
vous avez voyez d'ailleurs je les fais ici protected pas de problème par contre comme j'ai dit pour l'interface ces publics donc on peut pas faire un attribut privé on peut pas faire un tribut pour le tactile même si voilà
31:10
Speaker A
c'est comme une classe s'est pas complètement comme une classe d'accord c'est en termes de syntaxe il ya pas tous pareils et au niveau comportement non plus donc à bienne différence entre classes abstraite interface so lu ment pas la même chose et 2 par
31:21
Speaker A
contre même si on ne peut pas donc utiliser sa voix l'a22 comment dire de de modhac c'est donc au public private pour le textile c'est honteux quand même dans une interface d'utiliser des méthodes statique puis que l'interface de toute façon ce instant si pas donc on
31:37
Speaker A
pourrait indiquer on là pour le coup c'est pas forcément intéressant mais on peut par exemple avoir je mette au public parce que c'est bien de personnellement je préfère le mettre et à voir je sais pas moi failli seulement la glace parce que pour
31:50
Speaker A
le coup mon véhicule j'ai mis une vitesse mais on pourrait se dire que ça c'est la vitesse de déplacement du véhicule en normal et là on pourrait par exemple dire on aurai je peux m'en faut maintenant mettre linz mais on aurait
32:02
Speaker A
par exemple un fly speed comme ceux ci puis qui serait c'est pas comme ça en fait c'est même statique finales ou finale du tas ça qu'on peut avoir un élément finale parce que c'est une constante en fait voilà public finally
32:16
Speaker A
int et on n'aurait pas moi j'en sais rien une vitesse de vol pour tous les tous les éléments j'ai franchement pas d'idée non mais enfin les 20 km un tomtom ça va vite est invaincu au moteur c'est pas
32:26
Speaker A
mal et voilà donc on peut évidemment mais des éléments des constantes rappelez-vous le mot-clé final on a déjà abordé dans les dents d'essence présente on peut avoir des éléments statiques 1 sans problème dans une des mes même des
32:38
Speaker A
méthodes on peut faire des méthodes statique qui permettent comme ça de passer par l'interface comme on l'a vu avec les classes les classes qui ont des méthodes statique s'ancrer d'instance de quoi que ce soit de fly apple on
32:49
Speaker A
utiliserait la méthode statique aujourd'hui un pas tuer on en a déjà parlé à tous qui était métastatique c'est la même chose pour les interfaces tout ce que vous savez sur les méthodes statique fonctionne paris pour les interfaces mais c'était bien quand même
32:58
Speaker A
de le rappeler et pourquoi c'est important parce qu'avant java huit ans que java 7 et les vers des versions antérieures on ne pouvait pas faire de méthodes statique dans une interface c'est pour ça que j'en parlais normalement de façon
33:09
Speaker A
vous êtes au minimum sur java 8 voire même java dix ans que vous avez dit de ne pas partir sur une version 1 qui datent de 5 10 ans pas non plus déconner donc vous avez quand même une version un
33:17
Speaker A
minimum récente et c'est pour ça qu'elle s'est petit à ses petites choses qui étaient à prendre en compte alors normalement j'ai fait le tour où il est qu une dernière chose donc je sais que je vais vous parler pour la fin de la
33:25
Speaker A
vidéo et je regarde si j'ai pas oublier autre chose de ce que je voulais vous dit les éléments on a parlé de ça on a parlé aussi de ça il sent on a parlé aussi j'ai fait le tour de tout en fait c'est
33:38
Speaker A
bien parfait parfait parfait donc on va pouvoir du coup terminé avec ce que je voulais vous dire sinon il ya un petit faut pas que j'oublie je les ai pas d'autant plus accès qu'à main quand même importance que c'est arrivé au sec java
33:48
Speaker A
8 ainsi pas de bêtises il y avait donc le comment dire la notion de d'interface fonctionner sert qu'à des records avec java 8 on a inclus en tout cas on a introduit ce qu'on appelle les interfaces fonctionnelles et une interface
34:01
Speaker A
fonctionnelle en fait c'est très simple c'est une interface qui n'a qu'une seule et unique méthode abstraite d'accord donc en gros ben moi ce que j'ai fait en fait à ses souhaits un petit peu savoir ça alors j'ai pas de algérien depuis que
34:14
Speaker A
j'ai modifié truc non c'est bon donc ya pas le mot clé abstract un rappel marchera peut même pu mettre ça comme ça parce que tu as honte pour dans une interface ces publics voilà qu'on le veuille ou pas c'est comme ça mais ici
34:26
Speaker A
comme il n'y a qu'une seule méthode abstraite commandant mon interface on dit que c'est une interface fonctionnelle est d'ailleurs souvent ou peu utilisés alors ça on verra je ferais est-ce que c'est pas fait ou non non je fais cette
34:36
Speaker A
vidéo mais on abordera en fait pas mal de notation comme ça vous verrez qu en java on a des notations souvent avec un @ et on a un mot précis suivant des endroits du code avec des choses bien
34:47
Speaker A
spécifique pour indiquer des choses aux compilateurs et je n'ai pas faux moment où cette vidéo est faite la vidéo le tuto n'a pas été fait mais de toute façon vous aurez un tuteur en fait sur tous ces éléments en fait tous ces
34:58
Speaker A
petits mots qu'on peut mettre des fois droite à gauche pour indiquer tout un tas de choses aux compilateurs et vous verrez de quoi il en retourne bien en détail dans ce tutoriel donc là en fait bon lui indiquerait d'ailleurs c'est
35:07
Speaker A
faux ce que j'ai dit fonctionnel intel face pour dire simplement là on a une interface fonctionner et ça permet simplement prévoit au compilateur à la compilation de voir qu effectivement elle est et si jamais vous êtes bourrés quelque part vous dit
35:18
Speaker A
es tu t'es trompé son interface en fait fonctionnel n'est pas vraiment fonctionnel donc il ya quelque chose qui va pas en gros si vous voulez par exemple vous dire je veux absolument faire une interface fonctionnelle et bien en utilisant ce genre de terrain ça
35:29
Speaker A
permet de forcer à avoir effectivement une interface fonctionnelle je rentre pas trop un détail parce qu'on le verra vraiment bien à part dans une vidéo dédiée toutes ces choses là notamment pour les mots fera etc on abordera aussi dans ce genre de
35:41
Speaker A
tutoriels là donc en gros c'est ça par contre évidemment comme on parle simplement de méthodes abstraite rien n'empêcherait de faire aussi pour une classe d'une interface fonctionnelle des méthodes statique parce qu'une classe d'une méthode statique peut être utilisée sans utiliser une classe qu'ils
35:56
Speaker A
implémentent et 109 instances y ait quoi que ce soit rappelez-vous en métastatique c'est juste tu mets le nom de l'élément question t2 petit pointu mais non ta méthode et ça tu peux l'appeler sans problème ça fonctionne évidemment de cette manière donc il faut
36:10
Speaker A
bien le prendre en compte et nous avons également un autre cas qui est arrivé je voulais terminer du coup cette séance et on va terminer cette séance avec ça concernant les méthodes par défaut ça a été également introduit j'espère pas me
36:22
Speaker A
tromper parce que voilà c'est un but de ce que je me suis un mais si je me trompe pas vous pouvez toujours me pour ce qu'ils font déjà du java si je me suis gouré dans numéro de version vous
36:30
Speaker A
pourrez éventuellement me faire leur tour dans les commentaires n'hésitez pas mais pareil avec l'hymne 5 avec java 8 on a aussi introduit donc en plus de pouvoir utiliser des méthodes statique ride interface qu'on a eu justement ces interfaces fonctionnelles aussi un sonos
36:42
Speaker A
et petits nouveaux prêts un concept on va dire on a aussi possibilité de faire des méthodes par défaut la méthode par défaut c'est assez simple si l'on va faire qu'on va faire je vais virer le jeu peut laisser en fait je
36:55
Speaker A
passe il peut mettre autre chose pour m à mettre n'importe quoi je vais faire d'ifolor je pense que le public va pouvoir passer ici après le mot default et void hors-jeu m je met n'importe quoi en fait c'est je ne sais même pas ce que
37:08
Speaker A
je peux m on m reste alors c'est vraiment juste pour tester pour montrer comment ça marche en gros on va voir ça et là exceptionnellement parce que c'est une méthode par défaut d'accord je vais pouvoir implémenter dans l'interface c'est qu'à l'époque
37:24
Speaker A
ravan ça n'existait pas il ya même des langages d'ailleurs où la police a pas dit différent il ya d'autres langages de programmation avec du paradigme objets qui ne permettent pas de faire ça d'accord ça c'est vraiment propres à
37:34
Speaker A
java d'accord java permet de faire des méthodes par défaut ce qu'on n'aurait pas forcément dans tous les langages qui permettent de faire de la programmation que j'ai donc attention là c'est une exception où les méthodes par défaut dans une interface ne fonctionnera pas
37:46
Speaker A
sur tous les langages à programmation objet qui permettent d'utiliser l'interface attention mais du coup ici en gros on a ça c'est comme ça on utilise ce mot clé default qui veut dire mon âge implémente exceptionnellement envoya c'est une exception j'appelais
38:01
Speaker A
mans du code dans une interface autre chose qui avant j'avais 8 encore une fois si je me trompe pas ne permettait pas de faire et comment ça fonctionne pas tout simplement si les classes qui implémentent de votre interface
38:14
Speaker A
redéfinissent d'accord donc implémente en fait cette méthode test eh bien ils utiliseront leurs propres méthodes tests et sinon et comme l'indiqué le mot-clé default et bien c'est cette implémentation là qui sera exécuté par défaut c'est tout c'est juste ça en fait
38:28
Speaker A
pour donc si par exemple je fais si ces pointes est s pointe est comme la elles ont toutes les deux pas implémenter cette méthode mais elles s'appelleront elle s'amuse rumba ça va afficher test pour les deux donc on va faire un cas à
38:42
Speaker A
part pour lui public le vol de test donc y en a un qui disait au pouvoir faire un truc petit disette est m mon test et cpa très très possessive un set cette classe du coup elle fait son propre test on
39:01
Speaker A
compile tout ça j'ai pas fait d'erreur c'est bon et voilà d'accord on voit que celle donc le la chaumière qui a implémenté la méthode bas utilise sa propre méthode est là pour le coup du navire comme il n'a pas implémenter
39:15
Speaker A
cette méthode comme elle est marquée étant par défaut grâce aux mots clés des fautes ainsi lier pas vous aurez une erreur évidemment parce qu'il faut absolument tout implémenté dans une interface si ce n'est pas une méthode par défaut mais là comme ça en est une
39:27
Speaker A
et bien c'est cette méthode qui sera utilisé du coup pour le navire voilà la méthode par défaut comme le nom indique dit c'est une méthode par défaut je les termine avec ça c'est un petit bonus j'aurais pu j'aurais pu ne pas vous en
39:40
Speaker A
parler mais je tenais quand même en parler ce que c'est arrivé avec java 8 normalement et du coup ça toujours c'est toujours bien de savoir qu'à ça que vous soyez pas surpris si un jour vous tomber dessus mais en bas mince je pensais que
39:51
Speaker A
j'ai toujours entendu dans une interface ont implémenté rien et puis la belle aya de l'implémentation donc je comprends plus grasse et c'est embêtant ça c'est confus donc là en tout cas vous devez cet exemple et c'est simple à voir ce
40:01
Speaker A
qu'en heureusement le là dessus le jaune le langage java et très verbeux c'est à dire qu'on a des mots pour indiquer tout pour que la voilà ici on comprend que c'est à implémenter et là on comprend que ça l'est parce qu'il ya
40:11
Speaker A
ce petit mot clé magique le default qui nous indique c'est une méthode par défaut et je vais en terminer là ça fait quarante minutes de vidéo on aura bien fait toujours constant les interfaces j'espère que ça vous a permis de bien comprendre
40:23
Speaker A
d'accord cette nouvelle notion ça vous permet aussi de bien la compléter avec les classes abstraite d'accord ce que le principe pour moi en tout cas c'est que vous ayez bien compris quand utiliser là quand utiliser l'autre je pense que si on peut résumer
40:34
Speaker A
le plus simplement mais c'est même si c'est pas exhaustifs c'est encore une fois la classe abstraite vous avez des classes qui ont des liens étroits d'accord et donc des éléments communs donc vous pouvez les hiérarchiser via une tasse abstraite et
40:46
Speaker A
quand vous avez des classes qui peut être complètement indépendante mais vous pourriez avoir besoin de leur apporter des fonctionnalités bien précises sans qu'elle est elle-même un ces classes là des liens entre elles eh bien on va passer par une interface
40:58
Speaker A
n'oubliez pas une interface pour en revenir au schéma c'est un contre voilà qui vous dit pas je propose une api d'accord donc un ensemble de fonctionnalités tout simplement et mais sans forcément savoir comment je vais le faire et tous ceux qui veulent
41:12
Speaker A
l'utiliser eh bien ils nous diront comment en fait il implémente ça comment peut voler c'est un peu comme si vous me disiez tiens moi je veux que telle chose face telles choses et après votre mort vous demande à quelqu'un de se
41:23
Speaker A
débrouiller en fait pour sa fonction vous n'avez pas besoin de savoir comment il le fait tant que ça le fait c'est ça d'interface en fait c'est vraiment un contrat qui engage donc la classe qu'ils implémentent à devoir implémenter ce que
41:35
Speaker A
possède l'interface si vous avez compris tout ce que je vous ai dit sur cette vidéo sur la vidéo concernant necas abstraite vous aurez compris je vous dis pratiquement tous là dessus et ça permettra aussi de terminer donc sur ce
41:47
Speaker A
gros seins ce gros passage en fait de secours java avec la prochaine séance concernant le polymorphisme c'est à dire que tout ce qu'on a vu là sur les classes abstraites les interfaces permettent de faire du polymorphisme ce sera le sujet de la prochaine séance
42:00
Speaker A
et vous allez voir c'est très très pratique ça fait gagner beaucoup beaucoup de lignes de code ensuite pour le développer donc je cours je vous laisse avec cette fin de vidéo j'espère que ça vous a plu on se retrouvera pour la prochaine
42:10
Speaker A
séance pour le polymorphisme et s'il ya des questions comme d'habitude n'hésitez pas à les laisser dans les commentaires à bientôt tout le monde [Musique] [Applaudissements] tous [Musique]
Topics:Javainterfacesclasses abstraiteshéritagepolymorphismeprogrammation orientée objetexemples Javavitesse de déplacementimplémentationcontrat interface

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →