Avatar ·

Implements et extends en Java : quand les utiliser et quelle est la différence ?

Bonjour à tous ! J'ai commencé à apprendre Java et je n'arrive pas à comprendre la différence entre les mots-clés extends et implements. Apparemment, les deux sont utilisés pour l'héritage, mais quand faut-il utiliser l'un ou l'autre ? J'ai écrit un petit code, mais il ne compile pas et je sens que je confonds les concepts : ```java class Animal { void eat() { System.out.println("Mange"); } } interface Pet { void play(); } // C'est ici que je ne suis pas sûr class Dog extends Animal implements Pet { // J'essaie de redéfinir la méthode de l'interface void play() { System.out.println("Joue avec la balle"); } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.eat(); dog.play(); } } ``` Erreur : la méthode play() dans Dog ne redéfinit pas la méthode de Pet car elle n'est pas public. J'ai corrigé en mettant public, mais je ne comprends toujours pas complètement : 1. Pourquoi ai-je utilisé extends pour la classe Animal et implements pour Pet ? 2. Peut-on faire l'inverse ?