Le mot-clé extends en Java est utilisé pour indiquer qu'une classe hérite d'une superclasse. Il s'agit d'un aspect fondamental de la programmation orientée objet en Java, qui permet à une nouvelle classe d'hériter des champs et des méthodes d'une classe existante.
Utilisation
Le mot-clé extends est utilisé dans les déclarations de classes pour établir une relation d'héritage entre deux classes.
Syntax
classSubclassNameextendsSuperclassName{// class body}Propulsé par
SubclassName: Le nom de la nouvelle classe dont on hérite.
SuperclassName: Le nom de la classe existante dont on hérite.
Exemples
Exemple 1 : Héritage de base
classAnimal{voideat(){
System.out.println("This animal eats food.");}}classDogextendsAnimal{voidbark(){
System.out.println("The dog barks.");}}publicclassMain{publicstaticvoidmain(String[] args){
Dog dog =newDog();
dog.eat();// Inherited method
dog.bark();// Method of Dog class}}Propulsé par
Dans cet exemple, la classe Dog étend la classe Animal en héritant de sa méthode eat. La classe Dog possède également sa propre méthode bark. Lorsqu'une instance de Dog est créée, la méthode héritée eat et la méthode bark peuvent être appelées.
Exemple 2 : Surcharge des méthodes
classAnimal{voidsound(){
System.out.println("This animal makes a sound.");}}classCatextendsAnimal{
@Override
voidsound(){
System.out.println("The cat meows.");}}publicclassMain{publicstaticvoidmain(String[] args){
Cat cat =newCat();
cat.sound();// Overridden method}}Propulsé par
Ici, la classe Cat étend la classe Animal et remplace la méthode sound pour fournir sa propre implémentation. L'annotation @Override est utilisée pour indiquer que la méthode est surchargée.
Exemple 3 : Héritage des champs
classPerson{
String name;}classEmployeeextendsPerson{
int employeeId;}publicclassMain{publicstaticvoidmain(String[] args){
Employee emp =newEmployee();
emp.name ="John Doe";// Inherited field
emp.employeeId =12345;
System.out.println("Name: "+ emp.name +", Employee ID: "+ emp.employeeId);}}Propulsé par
Dans cet exemple, la classe Employee étend la classe Person et hérite du champ name. La classe Employee possède également son propre champ employeeId.
Conseils et bonnes pratiques
Utilisez l'héritage avec discernement: L'héritage doit être utilisé lorsqu'il existe une relation claire entre la sous-classe et la superclasse.
Remplacez correctement les méthodes: Utilisez l'annotation @Override lorsque vous surchargez des méthodes pour vous assurer que vous surchargez correctement une méthode de la superclasse.
Évitez les hiérarchies d'héritage profondes: Les hiérarchies d'héritage profondes peuvent rendre le code difficile à comprendre et à maintenir. Préférez la composition à l'héritage lorsque c'est nécessaire.
Accéder aux méthodes de la superclasse: Utilisez super pour appeler les méthodes de la superclasse à partir de la sous-classe si nécessaire.
classAnimal{voideat(){
System.out.println("This animal eats food.");}}classDogextendsAnimal{voideat(){super.eat();// Call superclass method
System.out.println("The dog eats dog food.");}}Propulsé par
Enchaînement de constructeurs: Utilisez super() pour appeler le constructeur de la superclasse à partir du constructeur de la sous-classe.
classPerson{Person(String name){
System.out.println("Person's name is "+ name);}}classEmployeeextendsPerson{Employee(String name, int employeeId){super(name);// Call superclass constructor
System.out.println("Employee ID is "+ employeeId);}}Propulsé par
Comprendre l'héritage
L'héritage est un concept clé de la programmation orientée objet (POO) qui établit une relation entre une superclasse plus générale et une sous-classe plus spécifique. Cette relation permet à la sous-classe d'hériter des attributs et des méthodes de la superclasse, ce qui favorise la réutilisation du code et la structuration logique.
Relation Is-A: Le mot-clé extends signifie qu'il s'agit d'une relation "is-a". Par exemple, un Dog est un Animal, et un Employee est un Person.
Héritage unique: Java prend en charge l'héritage unique, ce qui signifie qu'une classe ne peut étendre qu'une seule autre classe afin d'éviter toute ambiguïté et complexité.
Combinaison d'extensions et d'implémentations: Une classe peut étendre une autre classe et implémenter plusieurs interfaces simultanément. Cette combinaison permet à une classe d'hériter d'une superclasse et d'adhérer à plusieurs contrats définis par des interfaces.
classAnimal{voidmove(){
System.out.println("This animal moves.");}}interfacePet{voidplay();}classDogextendsAnimalimplementsPet{voidbark(){
System.out.println("The dog barks.");}publicvoidplay(){
System.out.println("The dog plays.");}}publicclassMain{publicstaticvoidmain(String[] args){
Dog dog =newDog();
dog.move();// Inherited method from Animal
dog.bark();// Method of Dog class
dog.play();// Implemented method from Pet interface}}Propulsé par
Dans cet exemple, la classe Dog étend la classe Animal et met en œuvre l'interface Pet, ce qui illustre la combinaison de l'héritage et de la mise en œuvre de l'interface.
Le mot-clé
extendsen Java est utilisé pour indiquer qu'une classe hérite d'une superclasse. Il s'agit d'un aspect fondamental de la programmation orientée objet en Java, qui permet à une nouvelle classe d'hériter des champs et des méthodes d'une classe existante.Utilisation
Le mot-clé
extendsest utilisé dans les déclarations de classes pour établir une relation d'héritage entre deux classes.Syntax
SubclassName: Le nom de la nouvelle classe dont on hérite.SuperclassName: Le nom de la classe existante dont on hérite.Exemples
Exemple 1 : Héritage de base
Dans cet exemple, la classe
Dogétend la classeAnimalen héritant de sa méthodeeat. La classeDogpossède également sa propre méthodebark. Lorsqu'une instance deDogest créée, la méthode héritéeeatet la méthodebarkpeuvent être appelées.Exemple 2 : Surcharge des méthodes
Ici, la classe
Catétend la classeAnimalet remplace la méthodesoundpour fournir sa propre implémentation. L'annotation@Overrideest utilisée pour indiquer que la méthode est surchargée.Exemple 3 : Héritage des champs
Dans cet exemple, la classe
Employeeétend la classePersonet hérite du champname. La classeEmployeepossède également son propre champemployeeId.Conseils et bonnes pratiques
@Overridelorsque vous surchargez des méthodes pour vous assurer que vous surchargez correctement une méthode de la superclasse.superpour appeler les méthodes de la superclasse à partir de la sous-classe si nécessaire.super()pour appeler le constructeur de la superclasse à partir du constructeur de la sous-classe.Comprendre l'héritage
L'héritage est un concept clé de la programmation orientée objet (POO) qui établit une relation entre une superclasse plus générale et une sous-classe plus spécifique. Cette relation permet à la sous-classe d'hériter des attributs et des méthodes de la superclasse, ce qui favorise la réutilisation du code et la structuration logique.
extendssignifie qu'il s'agit d'une relation "is-a". Par exemple, unDogest unAnimal, et unEmployeeest unPerson.Dans cet exemple, la classe
Dogétend la classeAnimalet met en œuvre l'interfacePet, ce qui illustre la combinaison de l'héritage et de la mise en œuvre de l'interface.