Con esta refactorización haced lo mismo para frenar y girar.
package com.trifulcas.clases; public class Vehiculo { protected int velocidad; protected int direccion; protected int velocidadMaxima; public Vehiculo() { velocidadMaxima=200; } // El método acelerar con cuaalquier valor solo es accesible // A la propia clase y sus derivadas. No es accesible al usuario protected void acelerar(int cantidad) { velocidad+=cantidad; if (velocidad>velocidadMaxima) { velocidad=velocidadMaxima; } } public void acelerar() { acelerar(10); } public void frenar() { velocidad-=10; if (velocidad<0) { velocidad=0; } } public void izquierda() { direccion+=10; if (direccion>=360) { direccion-=360; } } public void derecha() { direccion-=10; if (direccion<0) { direccion+=360; } } public String estado() { return velocidad+" | "+direccion+" | "+velocidadMaxima; } } class Coche extends Vehiculo{ public Coche() { velocidadMaxima=150; } } class Bicicleta extends Vehiculo{ public void acelerar() { acelerar(3); } public void frenar() { velocidad-=3; if (velocidad<0) { velocidad=0; } } } class Tanque extends Vehiculo{ public void izquierda() { direccion+=90; if (direccion>=360) { direccion-=360; } } public void derecha() { direccion-=90; if (direccion<0) { direccion+=360; } } }
Resultado:
package com.trifulcas.clases; public class Vehiculo { protected int velocidad; protected int direccion; protected int velocidadMaxima; protected int velocidadMinima; protected int giroMax; protected int giroMin; public Vehiculo() { velocidadMaxima=200; velocidadMinima=0; giroMax=360; giroMin=0; } // El método acelerar con cualquier valor solo es accesible // A la propia clase y sus derivadas. No es accesible al usuario protected void cambiar(int cantidad) { velocidad+=cantidad; if (velocidad>velocidadMaxima) { velocidad=velocidadMaxima; } if(velocidad<velocidadMinima) { velocidad=velocidadMinima; } } /** * Acelera el coche 10 unidades * La velocidad máxima es de 200 km/hora */ public void acelerar() { cambiar(10); } /** * Frena el coche 10 unidades */ public void frenar() { cambiar(-10); } protected void girar(int cantidad) { direccion+=cantidad; if (direccion>giroMax) { direccion-=giroMax; } if (direccion<giroMax) { direccion+=giroMax; } } public void izquierda() { girar(10); } public void derecha() { girar(-10); } public String estado() { return velocidad+" | "+direccion+" | "+velocidadMaxima; } } class Coche extends Vehiculo{ public Coche() { velocidadMaxima=150; } } class Bicicleta extends Vehiculo{ public void acelerar() { cambiar(3); } public void frenar() { cambiar(-3); } } class Tanque extends Vehiculo{ public void izquierda() { girar(90); } public void derecha() { girar(-90); } }