bonjour à tous bienvenue sur ce court de java et comme promis nous allons aborder une autre notion du langage et plus particulièrement même de la programmation orientée objet parce que nous allons parler d'héritage j'en avais légèrement parler dans les vidéos précédentes avec toutes les notions qu'on a déjà abordé jusqu'à présent je vous ai expliqué que ce principe en fait cette notion de territoire étaient déjà présentes par rapport aux différentes à ce que nous avons utilisée jusqu'à présent notamment pour les chaînes de caractères tout ce qui a été lecture de données et ce genre de chose
alors je vais vous montrer bien sûr au travers d'un code et eu pas mal de pas mal d'exemples pour pouvoir illustrer un petit peu ce principe là que vous voyez à quoi ça sert comment ça se présente et comment on met en place justement un système d'héritage au niveau de notre code alors l'héritage en programmation c'est un petit peu comme l'héritage on va dire entre des personnes c'est pour créer en fait une relation encore entre différentes classes on va voir un petit peu comment on va partir d'un exemple de départ très simple je veux dire
mon 31 de fichiers donc j'ai un fichier ici pour l'application l'accord qui est en fait celui là donc c'est une simple classe habituelle avec la méthode mind accord et j'ai deux classes enclume classe pour représenter un cheval d'une classe pour représenter un pégase donc toutes ces choses qui sont marqués ici ne sont que tout simplement des notions de déjà vu en corse il ya des partis au niveau de ce code que vous ne comprenez pas il faudra pense à revenir sur les anciennes vidéos puisque ce ne sont que des choses qui ont été abordés dans
les vidéos précédentes et que normalement vous êtes censé savoir faire il est censé avoir assimilé pour montrer un petit peu au niveau est vite fait l'architecturé en tout cas de l'organisation des fichiers j'ai simplement fait un package d'accord entity et c'est vrai j'ai mis mes deux classes ici donc ça j'aurais pu j'aurais pu très bien m'en passer mais comment vous avez apprécié des package ça faisait pas de mal de faire un petit rappel dessus au niveau de la syntaxe tout ça voilà pour cette partie donc comment que ça se présente en gros nous avons donc
une classe qui va représenter une entité donc un cheval d'accord - constructeur très très simple ce cheval on a simplement le on peut créer des instances de ce cheval en mettant simplement un nom d'accord il va avoir une position donc avec des cordes n'a en fait x et y camper imaginer par exemple un cheval positionner sur une sur une interface en deux dimensions et du coup cette interface de dimension pour le positionner on aura du coup sa position x et y à partir de larmes la seule chose qu'il est capable de faire ce cheval c'est
de se déplacer la colt possède des méthodes mou qui permet de se déplacer donc avec une autre coordonnées à une autre coordonnées en x y et j'ai mis un petit message là pour voir que a bien fait ce changement là haut niveau notamment des attributs qui sont disponibles à mes bons arrêts quand on n'a même pas besoin de lait de les voir pour comprendre comment fonctionne cette classe pour le pégase on se retrouve à un petit peu avec la même chose d'accord avec un nom ici pour le constructeur mais nous avons une autre coordonnées qui
arrive qui est l'accord donnait donc la position en sept ce pégase peut également se déplacer comme locataire en fait un de manière terrestre x et y mais il peut aussi voler et appartements où il vole en fait il va prendre de l'altitude donc on va pouvoir le déplacer en fait sur cette coordonner les aides accord donc il peut il sera sur un environnement trois dimensions ok donc il peut se déplace en deux dimensions il peut également prendre de l'altitude et volé contrairement au cheval voilà comment se représente c'est donc au niveau du monde ma méthode
men j'ai tout simplement créer une instance de cheval d'accord je les fait se déplacer avec ta méthode qu'on a ici mou j'ai fait la même chose pour un pégase se déplacer et volé d'accord tout simplement non encore une fois tout ça c'est juste du rappel s'affirmer comme ça j'en ai profité avec ça avec cet exemple de code pour vous faire pas mal de rappel sur la syntaxe sur pas mal de choses qu'on a vues précédemment la création de classes les attributs les méthodes et notamment l'utilisation de pâques la corde d'organiser tout ça sous forme de
package pour l'héritage du coup voilà un petit peu le schéma qu'on obtiendrait au niveau de la représentation d'accord de 7 ans ning soap cette organisation pardon au niveau de java on va utiliser pas mal d'objets c'est à dire quand on va vous arriver on a on n'utilisait pas mal de pas mal de class string builders swing buffer on a eu pas mal d'exemples comme ça et au niveau de java comme c'est un langage qui utilisent le paradis objet toutes classes de ce type en fait hérite c'est à dire qu'en fait elle appartient à une classe
qui est au dessus de tout qui est tout simplement la classe object ici alors je les représente et ici parce que c'est la clac java d'ailleurs si vous consulter la documentation officielle vous verrez que des vous allez faire rechercher en fait une classe de la documentation on vous indiquera en fait qu'elle spécialisons qu'elle s'étend par rapport justement cette classe objet qu'est vraiment la classe de départ pour toutes comment il faut le comprendre tout simplement de dire que alors les classes qui appartiennent à java d'accord qui sont déjà native irrite évidemment de cette classe là et
vous aussi d'accord quand vous allez en fait créé une classe même si dans votre code ou l'indiqué pas nulle part on indique en fait qu'on a qu'on est en haut qu'on n'a une classe qui hérite d'object mais elle se fait automatiquement d'accord implicitement au niveau de la compilation java va rajouter tout simplement la spécialisation depuis cette caste donc voilà comment on peut représenter cette forme de chemin on peut dire nous classe ici horse et pegasus sont en fait des classes qui hérite de object où tout ce que possède cette classe ici d'accord qui est une
classe de java et bien nos classes à nous peuvent et pourront en tout cas les utiliser que ce soit les attributs elles ont les mêmes attributs et les mêmes méthodes d'accord ici on peut imaginer que c'est une classe mère d'accord et toutes les classes filles possèdent tous cas la mer donc c'est la tribu c'est à dire son comportement et ses méthodes c'est à dire les services qu'elle peut faire voilà donc ça c'est des choses très importantes donc voilà la relation qu'on aurait alors sans parler de cet héritage là d'accord cet héritage a pour moi ne
nous intéresse pas c'est juste qu'il faut il fallait vous sachez qu'au niveau de java quand vous créez une classe maintenant et puisqu'on aborde le sujet sur l'héritage et bien tout dépend d'accord tous étant à partir de object d'accord à chalon vous créer une nouvelle classe mais nous ce qui nous intéresse c'est que ici on n'a pas vraiment de relations d'héritage entre un cheval et un pay as pourtant on se rend très vite compte rien qu'au niveau du code déjà et bien qu'un cheval ici un pégase par rapport à la représentation de les fêtes sont assez
similaires d'accord on peut très bien très bien se dire qu'un pays est en fait c'est une sorte de cheval mais qu'il ya des choses en plus c'est à dire qu'il peut tout faire et possède le même comportement qu'un cheval à la différence que lui en plus de ça il peut voler d'accord c'est une petite chose qui l'a supplémentaires donc moi j'aimerais changer cette relation et c'est là que va intervenir justement ce principe d'héritage de ne pas dire je crée des chevaux un cheval à part et je crée un pégase a pas mais je veux pouvoir
créer un cheval et si je crée un pégase bas je veux qu'en fait nous ont payé ce soit un super cheval en gros c'est un cheval qui a pas mal de choses et y compris des méthodes ou éventuellement un comportement en plus que le cheval lui n'aurait pas pour faire ça au niveau du chemin où je vais obtenir tout simplement dont j'ai déplacé cette partie là voilà on voudrait tout simplement avoir ce genre de relation on passait vraiment pour schématiser alors moi je veux pas d'effacer ici un peu importe bon voilà le genre de schéma
je voudrais avoir ce genre de choses alors il faut fonctionner vous véritablement peut-être à l'envers de ce que vous pourriez penser en termes de logique c'est à vous serez peut-être tenté de vous dire ma le pégase comme il a plus de choses il est mieux entre guillemets que le cheval donc il serait au dessus sauf qu'en réalité il faut fonctionner différemment plus vous allez en europe où vous avez les on va dire les entités les plus basiques et plus on descend dans l'arbre comme ça de l'héritage et plus les classes qui en sortent ici sont
spécialisés donc possède de plus en plus de choses en gros ici horse à tout ce que possède object est ici pégase d'accord le pégase aura tout ce que possède or ce qui lui même possède déjà tous qui a object donc pegas possédera bien évidemment tout ça d'accord donc a vraiment une commune un principe comme ça de hiérarchie ou plus vous allez comme ça au plus bas dans les classes et plus elle possède tout ce qu on les classe en eau d'accord non elles dépendent et comment on va créer cette relation au niveau du coach que
maintenant je vous expliquer le principe voulait schématiser mais un an faut voir au niveau du code java comme on représente son accord en termes de syntaxe c'est très simple on va garder nos deux fichiers de classe pas de problème à ce niveau là par contre au niveau du pégase on va dire qu'il est temps exton on va essayer ce mot clé là au niveau de la définition de la classe donc c'est à dire notre classe schwan et là il va y avoir évidemment pas mal de petits changements au niveau de cette notation et notamment pas
mal de choses qui vont changer premièrement comme je l'aï indiqué ici au niveau du schéma du coup bassin là on peut l'enlever voilà je serai implicitement en partie on cède on a cette relation d'héritage eh bien on sait que pegasus il possède en fait la capacité de se déplacer l'accord de manière terrain c'est-à-dire avec moi donc ça pas besoin de quelque part de leur faire convainc pour le mettre en commentaire niveau du pégase vous expliquer pourquoi je le commente et je ne supprime pas tout simplement ce qu'on va revenir un petit peu dessus après alors
comment ça se passe on est d'accord que le cheval il demande simplement un monde il va se construire donc suivant un non et si on a passé des valeurs brutes pour la position x et y on voit que ces informations sont là alors là on voit que les attributs sont passées en privé le problème c'est que s'ils sont privés sans n'en avait parlé ils vont être privés en fait suivant la classe c'est à dire que la casbah ne gardera ses attributs pour elle mais nous on veut pouvoir comme ça véritablement créé cette relation ici d'héritage
donc un cheval pour nous c'est pas choquant en fait par exemple qu'un pégase est taxé aux attributs du cheval puisqu'il est censé lui-même les avoir notre pégase doit avoir les coordonnées x et y un an que possède de base le cheval donc plutôt d'utiliser le mot clé private on va introduire un nouveau mot clé par rapport à l'accès aux attributs on a vu pire event on avait vu public j'en avais parlé concernant les méthodes notamment et compris constructeur ou les classes ici est le nouveau mot clé qui va être introduit et protected protected c'est tout
simplement le même niveau d'accès que private sauf qu'on va permettre par contre de libre d'ouvrir l'accès en fait aux classes qui se font partie d'une hiérarchie comme ça d'héritage d'accord donc c'est privé sauf pour les classes qui hérite d'accord entre les autres d'accord qui ont un lien comme ça d'héritage une relation d'héritage entraîne donc moi de mettre pour tous puisque on veut que notre pegasi laissé trois informations du coup pas besoin ici de faire de la redondance c'est à dire que comme il possède tout ce qu'il ya le cheval à toutes ces informations de comparaison
élevée d'accord on garde simplement la tribu que lui l'a en plus parce que d'accord on est bien d'accord qui c'est le cheval lui l'a pas de coordonnées des aides mais le pégase là donc on met juste simplement cette information est au niveau de cette création vous voyez que là on a le même la construction un petit peu la même chose d'accord donc ça en réalité on le fait déjà au niveau de la création du cheval au niveau de son constructeur donc en gros ce qu'on va faire au niveau du code quand vous allez instanciés n'est
que ça c'est au niveau de la programmation tels que ça se passe quand on va créer ici un pégase en réalité on va appeler le constructeur de cheval d'accord qui va créer toute la partie en faite cheval et ensuite on ajoutera éventuellement bien ce qui permet la construction d'un pégase puisqu'en fait un pégase se construit en partie suivant la construction d'un cheval alors j'essaie d'être assez clair c'est pas évident trouver les bons mots pour l'expliquer mais heureusement avec le code et le schéma on peut le faire comprendre en gros on va pas dire il vient
tu vas créer un cheval qui possède une coordonnée donc un nom et x et y et ensuite tu crées de pégase qui aura un nom xy sinon on aurait deux instances et on aura en tout cas deux animaux différents donc ça n'irait pas on dit simplement notre pays gaz il possède une partie des choses qui est un cheval c'est à dire un nom une coordonnées x une corde on y donc on va utiliser le constructeur de shops qui y crée déjà tout ça mais par contre comme le pégase a besoin d'une coordonnées zen on l'ajoutera
en plus donc c'est très simple pour faire savoir qu'ici on a toutes ces informations là il vient il suffit simplement ici donc non pas de passer ce qu au delà mais d'utiliser le mot super d'accord qui va simplement faire référence en fait aux constructeurs supérieur d'accord super ça veut dire bah en fait quand on utilise super ici dans pour le pégase ça veut dire que tu as utilisé le constructeur sur la classe qui vient tout juste au dessus donc la classe parente donc il va utiliser le constructeur pour le cheval d'accord et on lui passe
le nom pourquoi on lui passe non parce que je rappelle que pour construire un cheval on a besoin d'un nom très important ici ça on les donne pas ce qu'on l'aimé ici arbitrairement on l'a en effet pas passé en paramètre pour avoir quelque chose dynamique donc juste ça et à la suite je fais ça donc même si on a l'impression qu'on le mec ça n'est pas présent pour le code à la fin votre pégase il aura bien un nom une corps une position x une position y ait une position en fait c'est juste que pour
la position aux aides ont levé directement là et pour le reste des informations comme un cheval est déjà construit sous c'est avec ces cette information là on passe par son constructeur d'accord ça évite de répéter le code et ça évite d'avoir des choses comme ça tout mélanger là on peut laisser en plan rivaux puisque je ne vais pas créer de choses je vais pas étendre en fait la classe pégase en gros quand je dis que je vais pas étendre la classe paix gage veut dire qu aura rien qui va se spécialiser par pour un pégase
accord elle sera une case en fait terminal en pâture à rien de plus et on verra d'ailleurs qu'elle des petits mots clés pour dire voilà qu'on a une classe qui n'est pas et en dames on peut utiliser un terrain certains mots clés en java pour faire ça donc là on a dû combien comportement on a géré au niveau de la construction d'accord des objets comme notamment au niveau des attributs et on va passer maintenant au niveau des méthodes ici on voit à présent que le pégase au niveau de mon code là un moment j'utilise la
méthode move c'est pour ça qu'ils s'y relais commenté puisqu'on n'a pas besoin de la réécrire en fait puisque quand on va vouloir ici d'irak le pégase il utilise la méthode move qu'est ce qui va se passer le langage va chercher une méthode mou au niveau du pégase s'il n'en trouve pas il va dire ben on va voir si ta classe mère elle en a une donc il va remonter à la classe mer comme s'il faisait un super en fait et il va chercher une méthode move pour celle évidemment si on n'avait pas y aurait une
erreur mais là il va la trouver donc il va utiliser la méthode movie par contre si on veut faire déplacer ici le pégase différemment lave du couvent où devrait réécrire la méthode et en fera du coup une redéfinition d'accord on va redéfinir en fait la méthode move pour dire mon bas notre pégase il peut se déplacer comme un cheval mais il va le faire différemment donc du coup on réécrit la méthode donc là bas il faut pas que j'ai même code si vous avez le même code dans vos deux classes ça sert à rien de
faire une redéfinition autant supprimer tout ça par contre si le code la diffère de ce que vous avez dans la classe mer vous pouvez faire un droit définition il faudra leur écrire alors moi la seule chose qui va changer au final alors c'est peut-être le texte au lac est un petit peu différent parce que du coup elle promis c'est que j'aurais dû soit je précise pégase et c'est donc ce n'est pas forcément génial génial j'aurais dû utiliser une information pour ça parce que là je vais avoir ça j'aurais dû avoir cette information aspects du coup
on va voir le cheval se déplace alors c'est un pégase quand je vois pas dû mettre mon texte ici écoutez on va laisser comme ça voilà comme j'ai ça bon comme c'est du code identique je devrais pas faire une redéfinition on va laisser on va mettre sinon un l'animal se déplacent parce que j'aurais dû du coup sortir le texte en fait pour ne pas les avoir ici ce que je peux avoir une redéfinition l'a personnellement j'en veux pas pour vous montrer que ça fonctionne en fête qui aura pas de problème par rapport à ça ok
voilà donc move flyff fly ne voyais que le cheval peut pas voler oui les gars ce pas de problème qui pour le cheese il faut bien comprendre que ici quand on fait un move en fait c'est pas quelque chose qui appartient directement hop et jazz ça appartient à sa classe mer donc à la classe cheval mais comme il en irrite comme il est temps la classe cheval torse et bien il peut utiliser les classes de horse ya aucun problème par rapport à ça alors on va tester d'ailleurs où j'aurais pu tester le code avant mais
bon ce programme façon normand si j'ai bien importé mais package c'est bon ça devrait fonctionner voilà donc l'animal se déplace donc ça c'est le déplacement du cheval la corde premier c'est celui-là 167 428 on peut vérifier ensuite on a créé un pégase on le fait déplacer en 33 146 et après on voit qu'on le fait voler donc le pays à celles dans les airs et d'égal 466 ça correspond à ce que j'ai dit voilà donc on a véritablement cette relation qui se fait d'accord on n'a plus cette fois-ci de classe qui sont indépendantes on a
une relation d'héritage pour dire ben voilà le pégase c'est une sorte de cheval et si vous êtes capables par exemple quand vous avez un code de dire bac une classe est une sorte d'une autre classe c'est que généralement dans 99% des cas vous allez pouvoir créer définir une relation d'héritage si vous pouvez vous dire ce genre de choses par exemple je n'ai pas moins véhicule volant c'est une sorte de véhicule qui vous avez fait par exemple une classe véhicules et une classe véhicule volant a tout de suite on comprend que véhicule volant va étendre dans
le véhicule ce genre de show où dans un jeu vidéo on a un combattant et puis vous avez un j siens c'est votre magicien est une sorte de combattants et bien magicien est une classe qui va étendre la classe combattants voyez un petit bol principes et ça fonctionne pour tous alors là ça représente des entités l'héritage c'est à dire bah voyez des choses bien défini on n'est pas obligés de représenter les en kit et ça peut être des concepts ça peut être des idées aux ce genre de chose par exemple sur vous voulez développer un
lecteur audio vous pourriez avoir une classe par exemple pour la partie gestion du son ou alors pour la partie ensuite au niveau des différents états l'accord du bus on n'est pas obligé d'avoir forcément que des entités d'accord on peut avoir par exemple pour un jeu aussi en or et une classe qui va gérer le réseau vont pas voir une classe qui va gérer tout ce qu'ils enregistrent eux mans dans des fichiers pour faire des sauvegardes une classe pour gérer du classement une classe pour gérer le multijoueur bref on n'est pas obligé d'avoir forcément une classe
qui représenterait une entité qu'on pourrait parents vous trouvez dans mac qu'on pourrait en fait comment dire concrétiser réellement le diabète tiens on crée un joueur ont créé une maison ont créé une voiture d'accord on voyait pas forcément une classe pour ce genre de choses que je l'avais déjà d'ailleurs expliqué sur la vidéo pour la construction d'une classe donc on peut vraiment créer plein d'autres choses et après quand vous voyez qu'une relation peut se faire entre deux classes il n'y a pas de problème par rapport à ça alors petite indication par contre on ne peut pas
dire qu'une classe et en plusieurs classes à la fois par exemple serait pas possible ici de créer une autre classe que je sais quoi et de dire par exemple que le pégase et bien c'est une classe spécialisée de horse et d'une autre en même temps ce qu'on appelle l' héritage multiple en programmation il ya des langages qu'il le propose mais en java on ne peut pas par contre plus tard on verra on aura une vidéo dédiée sur ce qu'on appelle les interfaces qui permet un petit peu si vous voulez pas de dire qu'une classe implémente
donc là on parle pas des tendres et tendres mais d'implémentation et une classe pour à implémenter plusieurs interfaces à la fois d'accord donc c'est un petit peu un système qui a été vite simplement de faire l'héritage multiples parce que ça peut poser beaucoup de problèmes au niveau du code par contre avec les interfaces vous verrez qu'on pourra faire des implémentations multiples mais on fera une vidéo dessus ou revenant en détail pour parler des interfaces plus tard voilà haut niveau en tout cas de tout ce qui était héritage alors j'ai encore on n'a pas fait le
tour on n'a pas fait le tour de ce que je voulais ce que je voulais aborder mais en gros vous savez comment créer une classe dandine classe mère d'accord donc la classe voilà la superclasse ion est donc ici c'était horse vous savez comment créer sa une de ses classes fille éventuellement de cassis voilà donc ici une autre scène classe pegasus à partir de là on a vu qu'on pouvait accéder aux choses donc de la classe au dessus avec super alors si on veut par exemple forcé je sais pas si j'avais fait on l'a regardé movie
ci comme ça et puis ça mettons j'ai redéfini ma classe ouf comme ceci voilà par exemple ceci je pouvais très bien alors je sais pas comment je peux le faire est-ce que ça en fait il a vraiment fallu qu'ils sont en tort en gros de dia pas qu'un choix dit il n'affiche pas les infos on aurait pu faire ça et ensuite de dire ben pégase qui va faire prix là il va appeler en fait oui je fais super la méthode move de horse et après ça ils l'affichent quand même ce message là ce qui fait
du coup ce qu'on aurait fait au niveau du code pour montrer un peu la différence là voilà alors est-ce que j'ai tout voilà c'est ça l'animal se déplace pourquoi l'animal avis que naïma seule page est mis ici au final c'est pas forcément dans du coup c'est le pays assure les places on va on va éditer un comme il faut et du coup bon pour partir du principe que le cheval en affichant n'affiche rien et là vous voyez quand une fille cette méthode m'ouvre défini on dit bien tu va utiliser tous que donc on va faire
un appel à la méthode move de la classe par anton qu'on utilise encore une fois le mot clé super alors on peut le faire pour appeler comme ça une méthode d'une classe par an et ensuite on a rajouté autre chose dans cette méthode donc on affiche ce texte voilà donc on peut tout à fait utiliser sa super peut permettre d'appeler en utilisant tout seul le constructeur de la classe parente mais si vous mettez super suivie d'un point et suivi d'un long de méthode ça va chercher une classe dans une méthode pardon dans la classe pente
on peut faire ce genre de choses dont petit encore un nouveau mot clé on avait 6 1 pour vices qui fait référence à l'instance courante 1 qu'on avait vus ou lors de la construction d'une classe et maintenant vous avez ce nouveau mot clé super qui permet d'accéder à une information le constructeur ou une méthode autres call constructeur d'une classe parente lorsqu'il ya une relation d'héritage alors je sais rien oublié c'est encore une fille a tellement tellement de choses qu'il faudra aborder lors il va y avoir pas mal d'autres vidéos qui vont utiliser l'héritage en voir
d'autres choses et donc notamment ma part les interfaces on va parler des classes abstraites comme vous le verrez et on parlera du polymorphisme ce sera sous d'autres vidéos est ce que si j'avais tout mis en une seule vidéo on aurait une vidéo de 80 pour pour parler de tout ça sur quoi je peux terminer alors oui on peut également vérifier ce que wake là par exemple ont créé pas mal de vent créé différentes différentes instances de quelque chose et vous avez un petit mot clé très pratique en java c'est par exemple un moment donné vous
avez besoin de vérifier et bien si un objet est propre à une instance particulière en gros par exemple de dire bah ici est ce qu'on a bien payé et pas autre chose donc vous avez un mot clé qui instead of top ceci très simple à utiliser et que vous pouvez par exemple vous en servez dans une condition pour par exemple faire ceci si b et de l'instance par exemple on va mettre tes gars ce que ça marchera pas ce genre de choses qu'on n'est ce pas je n'ai jamais d'espacement ici et on peut dire du
coup qu'on va refaire voilà tout simplement la cua et c'est un mou tout seul comme ça pour dire ça c'est l'objet donc la variable qui contient votre objet instead of et ensuite dit si le nom de la classe en question et si cette variable et bien d'une instance de cette classe de la classe comme était ici est bien évidemment l'expression là sera valide donc vous pourrez par exemple à rentrer dans une condition très pratique dont je donne sur le six mots clés parce que je pense pas qu'on l'avait je pense pas que vous l'avez donné
dans une vidéo précédente donc tant que j'y pense autant je vous le donne comme ça - ce sera fait et ça peut servir dans pas mal decker on s'en servira un peu plus notamment quand on abordera le polymorphisme donc comme ça au moins il sera vu en avance voilà pour ça sur quoi je peux terminer à 8 total heures j'avais vous avez dit que notamment pour le cas du pays ici on terminera là je pense là cette séance avec ça je veux pas en fait pouvoir permettre à l'utilisateur par exemple de dire eh bien je
vais créer par exemple une classe qui est en paix gage et pour ça nous avons un autre mot clé langue là on aura pas mal de mots clairs sur cette vidéo qui est fine et fine elle s'utilise de plein de manières on peut déjà utilisé pour dire qu'une classe sera final une classe final donc avec le mot-clé fine gaule veut dire en fait qu'elle n'est qu'elle est non et en tables qu'on pourra pas en fait créé une classe fille de celle de celle-ci d'accord qui va étendre cette cette classe là par exemple pour mon p
15 mais ici je peux mettre ce mot clé est d'accord avant le mot-clé classe et ça veut dire je pourrai jamais par exemple je pourrais pas m'amuser à faire alors je vais faire une offre je n'aime pas le l'écrire mais en gros très rapidement je reste un super pegasus voilà mais en gros je peux pas m'amuser à faire ça je mettrai pas du col de son ca sert a rien je ne pourrais pas du coup dire ben là que j'ai une classe qui est en fait gaspard non puisque celles classées filenet indiqué fine sommes donc
allés final elle ne peut pas être étendue accord très important monsieur voulait empêcher la possibilité d'étendre une classe il faudra utiliser ce mot clé et du coup il sera impossible de l'étendre je vais l'enlever voilà on peut également utiliser ce mot clé pour une méthode un mettons ici au niveau 2 du cheval gic cette méthode mauvais fine auxerre par exemple empêcher que les classes fille redéfinit cette méthode sarko va empêcher le fonctionnement par exemple de cette méthode là absolument utiliser mou je rappelle que quand j'avais fait le test tout à l'heure ça donnait ça on
va compliquer quand même pour être sûr voyez le pégase utiliser sa méthode à lui d'accord c'est le texte à ce pays à se déplace si je veux empêcher ça je peux le faire ici d'accord là on va compliquer car bien sûr j'invente des mots je fais des tables en trop désolé et la voilà j'ai dit oui mais une exception c'est normal qu'il ya une exception pour vous dire tout simplement voilà on essaie d'ouvrir ait donc on essaye en fait de redéfinir une méthode final c'est pas possible voilà donc évidemment on empêche le saut lui ment
ça et du coup voilà on saura qu'on ne peut pas de redéfinir cette méthode donc on sera obligé d'utiliser la méthode de la classe par an là évidemment il y aura plus de problème du coup elle pégase utilise la méthode mou du cheval d'accord ils n'ont pas la lune qu'on aurait redéfini voilà comment on peut faire ça on peut également l'appliquer pour un attribut sûrement donné vous avez besoin d'avoir un attribut bien précis c'est un petit peu comme quelque chose de finale et bien honoré par exemple je sais pas moi je m protective alors je
ne sais pas quelle information mais en gros on aurait quelque chose ici en somme data de je ne sais quoi avec une valeur ce que c'est quelque chose qui ne pourra pas bouger d'accord qui ne pourra pas changer donc par exemple on a rien alors quand je mets n'importe quoi ici pour l'exemple mais sachez qu'on peut utiliser comme ça on peut également s'en servir ça c'est important aussi par exemple dans la création ici de valeurs ici a par exemple on voit que dans ce code ne modifie pas x et y jamais d'accord jamais je modifie
la valeur de xy manquerait ne m'empêcherait de dire ceci je ne modifie pas les valeurs de ses attributs là donc on peut les indiqué fine elle aussi et enfin on peut également localement c'est rare au sein d'une méthode si on avait besoin par exemple un moment donné ici de créer une variable qu'on ne va jamais modifié d'accord on pourrait également le faire puis je mets n'importe quoi voilà pour dire baron en gros c'est un peu comme si on enlevait une constante limite on pourrait même le mettre en majuscules pour dire voilà une fois qu'elle est
déclaré on ne pourra pas modifier sa d'accord elle est fine gueule donc on peut pas la modifier donc c'est une manière d'indiquer c'est pour ajouter de la lisibilité lisibilité pardon aux codes pour indiquer qu'en fait c'est des informations là ne l'ont pas être modifiée d'accord on ne changera pas leur valeur donc elles sont finale aussi aux métiers du coup le mot-clé failli nous voilà plein de cas possibles on peut utiliser farinole pour une classe pour l'empêcher d'être étendu sur une méthode pour l'empêcher d'être redéfinie et sur des êtres sur des pardons des paramètres de méthode
ou même pour une variable en local pour empêcher d'être simplement d'être modifiées d'accord pour indiquer qu'ils allaient final donc non audi fiable c'est un petit peu comme un constant fait ans comme le c++ ainsi si vous faites de la programmation objet en c++ vous savez qu'on peut utiliser le mot clé consiste notamment pour faire ce genre de chose d'assez un petit peu pareil voilà donc là on a failli ne qui est propre justement à des exemples comme ça voilà alors que faire avec cet héritage pour terminer cette vidéo ben vous voyez que du coup vous
pouvez créer quand vous créerez plein de classe au niveau de vos projets donc au niveau de vos programmes vous pourrez créer des relations en héritage mais là où c'est génial aussi c'est que vous allez pouvoir sans problème eh bien prendre une classe de java je pense par exemple au début qu'on avait par exemple sur une builder rappelez vous c'est une classe de java qu'on avait déjà utilisé bien rien ne m'empêche vacances tout à fait possible sauf si bien évidemment la classe était marqué finder car rappelez vous qu une classe fine on ne peut pas être
étendu mais je peux dire par exemple je peins je fais ma classe à boire comme ceci quand je parle exemple tout bête mais il faudrait bien sûr faire les ihm porte qu'il faut bien poursuit une builder est bon ça sent je vais pas compiler le code non c'est pour montrer en gros donc là moi il faudrait faire le leem porte un voile pour avoir tout ce qu'il faut et on dirait simplement la classe et bien sûr vous pouvez étendre une classe native de java d'accord pas obligé que ce soit une casserole pour dire voilà je
vais me fais je vais moins 6000 à remplacer automatiquement merci pour dire bien je vais en fait partir de la classe sur une builder de java telle qu'elle est faite mais je vais éventuellement va redéfinir certaines méthodes pour changer ce comportement changer comment elle fonctionne vous pouvez faire ça et c'est justement tout le principe rappelez vous que je vous avais expliqué concernant l'encapsulation et tout ça qu'on n'avait pas forcément besoin de savoir comment été construite en fait une classe ce qu'on veut juste savoir ce à des méthodes qu'elles possèdent sur ce qu'elle nous permet de
faire cette classe là et après on peut sans problème les tendres si on veut pour changer le comportement d'une classe pour créer en fait une classe qui fonctionne un peu différemment mais se basent quand même sur un modèle existant donc voilà comment on peut faire ça et d'ailleurs pour terminer la séance rappelez vous de tout ce qui était tout ce qui concernait les exceptions qu'on a eus précédemment eh bien vous pourrez éventuellement créer une classe par exemple vous avez besoin de gérer un certain type de données particulières j'ai pas par exemple ici on peut dire
les coordonnées on a des coordonnées précises et on pourrait par exemple dire si les coordonnées je pas mention fait on va vers et si tout ça par exemple que d'un coup ici ont demandé une coordonnée pics mettons et la personne dont on veut dire jacques sylla coordonnées x est plus petit que 0 elle sera pas bonne pour peu importe la raison eh bien on pourrait très bien dire alors de base en tout cas faire ceci il fixe par exemple les petit que 0 de lever ni même une exception car ça je l'avais pas forcément montré
précédemment et c'est pas grave ce que je voulais garder ici parce que comme on devait aborder l'héritage c'était mieux d'attendre des explications concernant l'héritage pour voir ça donc au lieu d'attendre la levée d'une exception faite automatiquement par une classe en java évidemment vous pouvez vous-même manuellement levine exception donc le plus simple et le plus générique c'est de faire par exemple ceci est de dire voilà je crois moi là donc un message qui serait évidemment explicite rapport à ça et vous avez levé vous avez levé une exception alors dans l'idée même d'ailleurs on devrait faire ceci
et là où c'est intéressant parce que ça vous voyez que c'est un petit peu trop générique c'est un peu trop vain qu'un joueur j'avais parlé précédemment rappelez-vous sur les exceptions j'avais commencé un peu à parler d'héritage en vous disant qu'une exception c'est un peu trop vague ça peut tous être en fait comme exception ça peut concerner un fichier ça peut concerner une structure de données ça peut concerner l'environnement d'exécution ça peut concerner une variable cela peut concerner enfin tellement tellement de choses que c'est beaucoup trop vagues trop vagues pardon eh bien nous empêcherait encore une
fois de faire jeu pas moins la force exception de diaba je sais pas j'ai une classe pour gérer les exceptions propre au cheval je sais que c'est un peu bizarre dit comme ça mais on peut tout à fait faire ça qui est dans la classe exception du langage java d'accord ça c'est pas moi qui la crée cette classe c java qui l'a créé mais on est en sept classes et du coup on pourra re définir tout un tas de choses rappelez vous que les exceptions raison notamment de méthodes très pratiques parmi tant d'autres qui sont
des messages d'accord que vous pouvez du cours définir si vous voulez et la fameuse creed stack cheikh baye soit vous laissez le comportement tel quel on partait faux pas de problème et si vous voulez par exemple a changé notamment la méthode guette message pour qu'elle affiche quelque chose de bien particulier concernant ici votre cheval et bien vous pouvez le faire aussi et à partir de là bas au lieu de faire un flot onu aux exceptions eh bien on aurait simplement ceux ci ont dit que notre constructeur il peut éventuellement lever une rolls exception notre exception
à nous notre place à nous ici on ferait ça voilà donc là si vous avez compris tout ce que j'ai dit et je m'excuse par avance que c'est vraiment pas évident de l'expliquer et en plus de ça j'ai fait j'ai parlé d'héritage sur pas mal d'autres formations j'en ai parlé en c++ j'en ai parlé en paille tonnes tout ça et c'est vrai que quand on parle des mêmes notions qu'on répète un petit peu les mêmes notions mais sur plein de langage différent va du coup à la j'essaie de ne pas forcément tout dire de la
même manière mais je veux pas non plus réinventé aulas des nouveaux mots à chaque fois donc c'est pas toujours évident de l'expliquer mais si vous avez compris toutes mes explications et bien tant mieux si ce n'est pas suffisamment clair bas n'hésitez pas à revoir éventuellement la vidéo un peu plus lentement aussi parce que j'ai parlé assez vite quand même pour pas que ça traîne trop longues heures et si vraiment vous bloquez sur des sur des choses à bien spécifiques posés des questions dans les commentaires vraiment n'hésitez pas parce que c'est très important de comprendre ça
et si vous comprenez un petit peu ce principe d'héritage vous aurez compris énormément de choses pour la suite et ça va grandement ou faciliter la vie quand vous allez justement travaillé sur des vrais projets voiles et voiliers un petit peu le principe et surtout l'utilité encore une fois des excès de ferme pas des exceptions mais de l'héritage c'est qu'à partir de là on peut réutiliser du code et c'est justement tout le principe de la programmation objet du fait que nous travaillons avec des classes et bien c'est classe encore une fois et ça ça rejoint tout
ce que je vous avais dit on se fiche de savoir comment elles ont été faites cercla j'ai pas besoin d'aller voir dans le code de java pour voir comment sont faites des classes de java je peux sans problème ici créer ma propre classe d'exception sans même savoir comment a été écrit de cette classe là qui est native à java juste à partir en août je connais les méthodes et ça on les trouve dans la documentation pas besoin d apprendre par coeur et bien je peux redéfinir tous les comportements que je veux et je peux du
coup avoir une classe qui va utiliser toute la puissance d'une classe native de java mais qui sera adapté à une partie bien spécifique de mon programme parce que évidemment vous comprenez bien que le langage java ne gère pas des exceptions pour un cheval d'accord sinon il faudrait créer quinze mille scénarios différents ont cure et des millions et des millions de classe d'exception différents et le pire de ça c'est que même avec des millions et des millions il en manquerait voilà il n'aurait jamais en fait on n'aurait jamais la totalité des choses puisqu'il existe une infinité
en fait de possibilités du coup voilà vous pouvez faire ça en tant que développeur étendre des classes que ce soit des classes natif du langage ou vos propres classes et du coup avoir comme ça des relations il hiérarchie bien spécifique à votre projet et je pense que c'est un petit peu le tour par rapport à tout ça alors on aura pas mal d'autres choses dire que toute cette partie concernant l'héritage introduire d'autres notions très important dans programmation objet qu'on verra évidemment dans d'autres c'est en ça on va s'arrêter là je pense que cette vidéo était
suffisamment longs jours que ça fait un peu plus d'une demi heure de vidéo donc c'est pas mal comme ça n'hésitez pas encore une fois ci à des questions d'aidé petit souci par rapport à ça et surtout entraînez-vous l'avantagé aulas sait qu'avec l' héritage là vous avez vraiment moyen de vous exercer de faire votre petit programme voyages et développé comme c'est un petit truc très simple de simuler par exemple des personnages qu'on pourrait déplacer tout ça même s'il ya pas un interface graphique c'est pas grave à partir donc vous avez une console vous pouvez simuler des
déplacements juste avec du texte d'accord on vous verrez peut-être pas d'animations ou de choses visuelles mais c'est exactement tout paraît la seule différence c'est qu'à pas de surcouche graphique mais mon pouls et simuler parfaitement tout un tas de choses comme ça au niveau de vos programmes donc n'hésitez pas vous entraîner comme ça vous comprendrez bien ce principe d'héritage vous pouvez toujours vous servez un petit peu de ce schéma même s'il est quand même relativement simple et y ait pas grand chose à montrer mais voilà si vous avez compris que tout ce que possède une classe
est tendue enfin tout ce qui a une classe étendue concerne en fait sa classe par an tu es bien moins vous aurez compris pas mal de choses par rapport à ce concept d'héritage en programmation orientée objet je vous dis à bientôt pour la prochaine séance de java je pense que la prochaine fois nous parlerons de classe abstraite je crois il ya tellement d'autres notions on verra un petit peu en tout cas on va aller un peu plus loin sur l'utilisation je te demande de l'héritage et des différentes classes en java ciao nous [Musique] [Applaudissements] tous
[Musique] pour [Musique]