La herencia y el polimorfismo son conceptos fundamentales en la programación orientada a objetos (POO) y son muy utilizados en Java. Estos conceptos permiten crear jerarquías de clases y trabajar con colecciones de objetos de manera flexible. A continuación, se presentan una serie de ejercicios que te ayudarán a mejorar tus habilidades en el uso de herencia, polimorfismo y la clase ArrayList
en Java.
Ejercicio 1: Herencia Básica
Crea una clase Animal
con un método hacerSonido()
. Luego, crea dos clases que hereden de Animal
: Perro
y Gato
, y sobrescribe el método hacerSonido()
en cada una de ellas para imprimir sonidos específicos de cada animal.
import java.util.ArrayList;
class Animal {
public void hacerSonido() {
System.out.println("El animal hace un sonido");
}
}
class Perro extends Animal {
@Override
public void hacerSonido() {
System.out.println("El perro ladra: ¡Guau guau!");
}
}
class Gato extends Animal {
@Override
public void hacerSonido() {
System.out.println("El gato maúlla: ¡Miau miau!");
}
}
public class TestAnimales {
public static void main(String[] args) {
ArrayList<Animal> animales = new ArrayList<>();
animales.add(new Perro());
animales.add(new Gato());
for (Animal animal : animales) {
animal.hacerSonido();
}
}
}
Ejercicio 2: Herencia y Polimorfismo con ArrayList
Crea una clase Empleado
con atributos nombre
y salario
, y un método calcularSalario()
. Luego, crea dos clases que hereden de Empleado
: EmpleadoFijo
y EmpleadoPorHoras
. EmpleadoFijo
tendrá un salario fijo, y EmpleadoPorHoras
tendrá un salario basado en las horas trabajadas y la tarifa por hora. Usa un ArrayList
para almacenar varios empleados y calcula el salario total de todos los empleados.
import java.util.ArrayList;
abstract class Empleado {
protected String nombre;
protected double salario;
public Empleado(String nombre) {
this.nombre = nombre;
}
public abstract double calcularSalario();
}
class EmpleadoFijo extends Empleado {
private double salarioMensual;
public EmpleadoFijo(String nombre, double salarioMensual) {
super(nombre);
this.salarioMensual = salarioMensual;
}
@Override
public double calcularSalario() {
return salarioMensual;
}
}
class EmpleadoPorHoras extends Empleado {
private int horasTrabajadas;
private double tarifaPorHora;
public EmpleadoPorHoras(String nombre, int horasTrabajadas, double tarifaPorHora) {
super(nombre);
this.horasTrabajadas = horasTrabajadas;
this.tarifaPorHora = tarifaPorHora;
}
@Override
public double calcularSalario() {
return horasTrabajadas * tarifaPorHora;
}
}
public class TestEmpleados {
public static void main(String[] args) {
ArrayList<Empleado> empleados = new ArrayList<>();
empleados.add(new EmpleadoFijo("Carlos", 3000));
empleados.add(new EmpleadoPorHoras("Laura", 160, 15));
double salarioTotal = 0;
for (Empleado empleado : empleados) {
salarioTotal += empleado.calcularSalario();
}
System.out.println("El salario total de todos los empleados es: " + salarioTotal);
}
}
Ejercicio 3: Herencia con Métodos Adicionales
Crea una clase Vehiculo
con atributos marca
y modelo
, y un método arrancar()
. Luego, crea dos clases que hereden de Vehiculo
: Coche
y Motocicleta
. Coche
tendrá un método adicional abrirMaletero()
, y Motocicleta
tendrá un método adicional hacerCaballito()
. Usa un ArrayList
para almacenar varios vehículos y demuestra el uso de herencia y polimorfismo.
import java.util.ArrayList;
class Vehiculo {
protected String marca;
protected String modelo;
public Vehiculo(String marca, String modelo) {
this.marca = marca;
this.modelo = modelo;
}
public void arrancar() {
System.out.println("El vehículo " + marca + " " + modelo + " está arrancando.");
}
}
class Coche extends Vehiculo {
public Coche(String marca, String modelo) {
super(marca, modelo);
}
public void abrirMaletero() {
System.out.println("El coche " + marca + " " + modelo + " está abriendo el maletero.");
}
}
class Motocicleta extends Vehiculo {
public Motocicleta(String marca, String modelo) {
super(marca, modelo);
}
public void hacerCaballito() {
System.out.println("La motocicleta " + marca + " " + modelo + " está haciendo un caballito.");
}
}
public class TestVehiculos {
public static void main(String[] args) {
ArrayList<Vehiculo> vehiculos = new ArrayList<>();
vehiculos.add(new Coche("Toyota", "Corolla"));
vehiculos.add(new Motocicleta("Yamaha", "R1"));
for (Vehiculo vehiculo : vehiculos) {
vehiculo.arrancar();
if (vehiculo instanceof Coche) {
((Coche) vehiculo).abrirMaletero();
} else if (vehiculo instanceof Motocicleta) {
((Motocicleta) vehiculo).hacerCaballito();
}
}
}
}
Ejercicio 4: Biblioteca con Herencia y Polimorfismo
Crea una clase Publicacion
con atributos titulo
y autor
, y un método mostrarInformacion()
. Luego, crea dos clases que hereden de Publicacion
: Libro
y Revista
. Libro
tendrá un atributo adicional numeroPaginas
, y Revista
tendrá un atributo adicional numeroEdicion
. Usa un ArrayList
para almacenar varias publicaciones y demuestra el uso de herencia y polimorfismo.
import java.util.ArrayList;
class Publicacion {
protected String titulo;
protected String autor;
public Publicacion(String titulo, String autor) {
this.titulo = titulo;
this.autor = autor;
}
public void mostrarInformacion() {
System.out.println("Título: " + titulo + ", Autor: " + autor);
}
}
class Libro extends Publicacion {
private int numeroPaginas;
public Libro(String titulo, String autor, int numeroPaginas) {
super(titulo, autor);
this.numeroPaginas = numeroPaginas;
}
@Override
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Número de páginas: " + numeroPaginas);
}
}
class Revista extends Publicacion {
private int numeroEdicion;
public Revista(String titulo, String autor, int numeroEdicion) {
super(titulo, autor);
this.numeroEdicion = numeroEdicion;
}
@Override
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Número de edición: " + numeroEdicion);
}
}
public class TestPublicaciones {
public static void main(String[] args) {
ArrayList<Publicacion> publicaciones = new ArrayList<>();
publicaciones.add(new Libro("El Quijote", "Miguel de Cervantes", 400));
publicaciones.add(new Revista("National Geographic", "Varios", 2023));
for (Publicacion publicacion : publicaciones) {
publicacion.mostrarInformacion();
}
}
}
Conclusión
Estos ejercicios te proporcionarán una base sólida para trabajar con herencia y polimorfismo en Java, utilizando la clase ArrayList
para manejar colecciones de objetos. Practicar estos conceptos es esencial para desarrollar tus habilidades de programación orientada a objetos y te permitirá abordar problemas más complejos en el futuro. ¡Sigue practicando y explorando más sobre Java para convertirte en un programador más competente!
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.
NUESTRAS ÚLTIMAS PUBLICACIONES
- La importancia de mantener un ritmo de estudio durante las navidades.
- Cómo Multiplicar Matrices en Java: Guía Completa con Ejemplo Práctico
- Triunfos y logros de nuestra Academia SanRoque
- Herramientas Imprescindibles para Realizar Ingeniería Inversa en Java
- ¿A qué nivel de conversación en inglés estás dispuesto a llegar con Academia SanRoque?
- Cómo Resolver una Ecuación de Segundo Grado con GNU Octave
- Cuando vienes a la Academia SaRoque justo antes del examen final.
- 25N Día Internacional para la Eliminación de la Violencia contra la Mujer
- Cuando el profesor nos da la última oportunidad.
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed