Avatar ·

Implements y extends en Java: ¿cuándo usar y cuál es la diferencia?

¡Hola a todos! Empecé a estudiar Java y no puedo entender la diferencia entre las palabras clave extends e implements. Parece que ambas se usan para herencia, pero ¿cuándo aplicar cada una? Escribí un pequeño código, pero no compila y siento que estoy confundiendo conceptos: ```java class Animal { void eat() { System.out.println("Come"); } } interface Pet { void play(); } // Aquí no estoy seguro class Dog extends Animal implements Pet { // intento sobrescribir el método de la interfaz void play() { System.out.println("Juega con la pelota"); } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.eat(); dog.play(); } } ``` Error: el método play() en Dog no sobrescribe el método de Pet porque no es public. Lo corregí a public, pero aún no entiendo completamente: 1. ¿Por qué para la clase Animal usé extends y para Pet usé implements? 2. ¿Se puede hacer al revés?