Accéder au contenu principal
Documents
Tableaux JavaProgrammation orientée objet en JavaTraitement des fichiers en JavaIntroduction To JavaLes bases du langage JavaMots-clés Java

étend le mot-clé en Java

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

class SubclassName extends SuperclassName {
    // class body
}
  • 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

class Animal {
    void eat() {
        System.out.println("This animal eats food.");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("The dog barks.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();  // Inherited method
        dog.bark(); // Method of Dog class
    }
}

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

class Animal {
    void sound() {
        System.out.println("This animal makes a sound.");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("The cat meows.");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.sound(); // Overridden method
    }
}

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

class Person {
    String name;
}

class Employee extends Person {
    int employeeId;
}

public class Main {
    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.name = "John Doe"; // Inherited field
        emp.employeeId = 12345;
        System.out.println("Name: " + emp.name + ", Employee ID: " + emp.employeeId);
    }
}

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.
    class Animal {
        void eat() {
            System.out.println("This animal eats food.");
        }
    }
    
    class Dog extends Animal {
        void eat() {
            super.eat(); // Call superclass method
            System.out.println("The dog eats dog food.");
        }
    }
  • Enchaînement de constructeurs: Utilisez super() pour appeler le constructeur de la superclasse à partir du constructeur de la sous-classe.
    class Person {
        Person(String name) {
            System.out.println("Person's name is " + name);
        }
    }
    
    class Employee extends Person {
        Employee(String name, int employeeId) {
            super(name); // Call superclass constructor
            System.out.println("Employee ID is " + employeeId);
        }
    }

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.
class Animal {
    void move() {
        System.out.println("This animal moves.");
    }
}

interface Pet {
    void play();
}

class Dog extends Animal implements Pet {
    void bark() {
        System.out.println("The dog barks.");
    }

    public void play() {
        System.out.println("The dog plays.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.move();  // Inherited method from Animal
        dog.bark();  // Method of Dog class
        dog.play();  // Implemented method from Pet interface
    }
}

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.

Apprendre l'essentiel de Java

Développez vos compétences en Java à partir de la base et maîtrisez les concepts de programmation.
Commencez à apprendre gratuitement