Herencia en Java
Crea un tipo hijo con extends para usar un metodo escrito en el padre. Pon horn en Car para que imprima beep. Escribe class Truck extends Car. En Yard.java construye un Truck y llama t.horn(). Compila con javac Yard.java y ejecuta java Yard. La pantalla debe mostrar beep. Una segunda demo tambien construye un Car simple para ver que el padre sigue funcionando despues del hijo. Deja super para la pagina siguiente. No reescribas horn en Truck en esta pagina — el override viene despues.
Un hijo conserva un metodo del padre
La pagina de paths nombro lugares con Paths.get. Esta pagina abre un modulo nuevo: una clase puede ser hija de otra. Abre un archivo didactico llamado Yard.java. Manten el nombre publico de clase Yard para que coincida con el archivo. Borra demos de ruta Route sobrantes, escritores Store, escaneres Reader y cualquier Scanner de teclado. El programa no debe esperar que escribas. No necesitas linea import en esta leccion.
Encima de la clase publica declara un tipo padre package-private:
class Car {
Dentro de Car escribe un metodo de instancia void horn() que imprima beep:
System.out.println("beep");
Luego declara el hijo:
class Truck extends Car {
Manten el cuerpo de Truck vacio en esta pagina. El hijo no reescribe horn. Las llaves vacias bastan para decir que Truck es una clase de Car.
Dentro de Yard.main construye un truck y llama el metodo heredado:
Truck t = new Truck();
t.horn();
La llamada funciona porque extends Car conecta Truck con Car. No copiaste horn dentro de Truck.
class Car {
void horn() {
System.out.println("beep");
}
}
class Truck extends Car {
}
public class Yard {
public static void main(String[] args) {
Truck t = new Truck();
t.horn();
}
}
Desde la carpeta que guarda Yard.java, ejecuta javac Yard.java. Cuando parentesis, llaves y puntos y coma coinciden, javac no escribe linea propia. Luego ejecuta java Yard — no java Yard.java. Quita el sufijo .java del comando de ejecucion. Solo hay una clase publica en este archivo, asi que el nombre coincide con Yard. Los tipos auxiliares Car y Truck quedan sin public en esta forma para principiantes. Poner tres clases publicas en un archivo haria que javac rechace — guarda la regla de la pagina de clases.
La pantalla muestra beep. Recorre la ejecucion una vez. Java empieza en Yard.main. new Truck() construye un objeto truck. t.horn() encuentra horn en el padre Car por herencia. El metodo imprime beep. Si javac dice que no encuentra horn en Truck, falta o esta mal escrita la linea extends Car — vuelvela a poner. Si ves note.txt o impresion de ruta, aun arranca un resto de Route — cambia a java Yard. Si la terminal espera escritura, queda un Scanner de teclado — borralo.
Escribe extends con cuidado. Una coma o la palabra implements por error no es esta leccion. La herencia aqui es la palabra clave extends entre nombres de hijo y padre. El hijo va primero: Truck extends Car, no al reves.
No escribas super en esta pagina. Llamar al constructor del padre con super es la leccion siguiente. Tampoco escribas un segundo horn dentro de Truck; el override viene despues. Hoy el hijo queda vacio y aun usa el metodo del padre. Ese cuerpo vacio es ensenanza intencional, no un error que arreglas copiando horn a Truck.
📊 Parent and child on this page
| Piece | Role |
|---|---|
| Car | parent type that owns horn |
| Truck | child type via extends Car |
| Yard | public starter with main |
| horn | prints beep; written only on Car |
El padre sigue funcionando solo
Un segundo programa mantiene el mismo Car, el mismo Truck extends Car vacio y la misma Yard publica. Dentro de main construye un Car y un Truck y llama horn en cada uno.
class Car {
void horn() {
System.out.println("beep");
}
}
class Truck extends Car {
}
public class Yard {
public static void main(String[] args) {
Car c = new Car();
Truck t = new Truck();
c.horn();
t.horn();
}
}
Compila con javac Yard.java, luego ejecuta java Yard. La pantalla muestra beep y luego otra vez beep. La primera linea viene del Car simple. La segunda del Truck que heredo horn. Crear un hijo no borro ni rompio el tipo padre. Ambos objetos pueden llamar el mismo cuerpo de metodo escrito una vez en Car. Sigues construyendo cada objeto con new; la linea extends no crea un truck automaticamente.
Ese contraste es el punto de control. La herencia anade una ruta hija a un metodo existente. No tienes que quitar el padre. Si quitas extends Car de Truck, t.horn() no compila porque Truck ya no recibe horn. Manten extends para el hijo didactico. Prefiere el archivo de un solo truck cuando quieras un beep tranquilo. Prefiere el de dos objetos cuando quieras probar que el padre aun responde.
Comparado con paths en Route
En la pagina paths, java Route nombro carpetas y archivos. En esta pagina, java Yard une tipos con extends. Guarda archivos Route solo como historia si siguen cerca; ejecuta java Yard para las demos de herencia y que la pantalla coincida con la leccion.
extends, reutilizar el metodo del padre y un cuerpo hijo vacio son las piezas nuevas. Ya conoces new y metodos de instancia de paginas OOP anteriores. Hoy esas piezas encuentran la herencia por primera vez en esta ruta del curso. Manten los nombres didacticos Car, Truck y Yard para que compilar y ejecutar sigan cortos y claros.
Lo que esta pagina deja para super
Esta pagina muestra un hijo que usa un metodo del padre sin escribir super. La pagina siguiente introduce super para que el hijo hable con el padre a proposito, sobre todo en constructores. Quédate con extends y la llamada heredada a horn aqui. No anadas super() como requisito en estas demos Yard todavia.
Antes de super
Puedes escribir Truck extends Car, construir un Truck y ver beep desde horn. Tambien puedes construir un Car simple y ver que el padre aun imprime beep. Compila Yard.java y ejecuta java Yard para cada demo guardada por turno. El hijo quedo vacio y aun uso el metodo del padre. La pagina siguiente es super, donde el hijo habla mas directo con el padre.
Guarda la demo de un solo truck para una llamada heredada clara. Guarda la demo de dos objetos para probar que el padre funciona solo. Deja super fuera de esta pagina por ahora. Esos tres habitos son el punto de control antes de seguir. Cuando beep aparece desde un Truck que nunca escribio su propio horn, la herencia hizo su trabajo en esta leccion y estas listo para el tema super.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior