// Clase abstracta que representa un Vehículo (Abstracción) abstract class Vehiculo { // Atributos encapsulados (Encapsulamiento) private String marca; private int velocidad;
// Constructor
public Vehiculo(String marca) {
this.marca = marca;
this.velocidad = 0; // Velocidad inicial en 0
}
// Método getter para la marca
public String getMarca() {
return marca;
}
// Método getter para la velocidad
public int getVelocidad() {
return velocidad;
}
// Método setter para la velocidad
public void setVelocidad(int velocidad) {
this.velocidad = velocidad;
}
// Método abstracto (Abstracción) que se implementará en las subclases
public abstract void acelerar(); // Polimorfismo
}
// Clase Coche que hereda de Vehiculo (Herencia) class Coche extends Vehiculo {
// Constructor que invoca al constructor de Vehiculo
public Coche(String marca) {
super(marca);
}
// Implementación del método acelerar (Polimorfismo)
@Override
public void acelerar() {
// Incrementa la velocidad de una manera específica para un coche
setVelocidad(getVelocidad() + 10);
System.out.println("El coche " + getMarca() + " acelera a " + getVelocidad() + " km/h.");
}
}
// Clase Motocicleta que hereda de Vehiculo (Herencia) class Motocicleta extends Vehiculo {
// Constructor que invoca al constructor de Vehiculo
public Motocicleta(String marca) {
super(marca);
}
// Implementación del método acelerar (Polimorfismo)
@Override
public void acelerar() {
// Incrementa la velocidad de una manera específica para una motocicleta
setVelocidad(getVelocidad() + 15);
System.out.println("La motocicleta " + getMarca() + " acelera a " + getVelocidad() + " km/h.");
}
}
// Clase principal para probar el código public class Main { public static void main(String[] args) { // Crear un coche y una motocicleta Vehiculo miCoche = new Coche("Toyota"); Vehiculo miMoto = new Motocicleta("Harley Davidson");
// Acelerar ambos vehículos (Polimorfismo en acción)
miCoche.acelerar();
miMoto.acelerar();
}
}