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 ?