Las clases Turismo, Deportivo y Furgoneta extienden a la clase Vehiculo. Estas clases heredan los atributos de Vehiculo y cada subclase añade atributos y métodos propios.
La clase Turismo añade los atributos puertas, marchaAutomatica y los métodos getPuertas() y getMarchaAutomatica().
La clase Deportivo añade el atributo cilindrada y el método getCilindrada().
La clase Furgoneta añade los atributos carga, volumen y los métodos getCarga() y getVolumen().
Además, cada subclase declara un método getAtributos(). Este método también se ha declarado en la superclase. Esto significa que el método getAtributos() de las subclases sobreescribe al método de la superclase.
Dependiendo del tipo de objeto que invoque el método, se ejecuta el método correspondiente a la clase del objeto. Por ejemplo, si el método es invocado por un objeto de la clase Turismo, entonces se ejecuta el código del método getAtributos() de la clase Turismo.
Los métodos getAtributos() de las subclases modifican el comportamiento del método getAtributos() de la superclase. En cada método se invoca a super.getAtributos() para que muestre los atributos de un vehículo y después se muestran los atributos propios de la subclase. Los métodos getAtributos() de las subclases sobrescriben el método getAtributos() de la superclase. Esta característica de los lenguajes de programación orientados a objetos se conoce como polimorfismo.
Un objeto de las subclases Turismo, Deportivo o Furgoneta puede invocar los métodos getMatricula(), getMarca(), getModelo(), getColor(), getTarifa(), getDisponible(), setTarifa() y setDisponible() de la superclase Vehiculo.
El esquema muestra la superclase Vehiculo y las subclases Turismo, Deportivo y Furgoneta con sus atributos y métodos.
El siguiente ejemplo muestra el comportamiento de los métodos sobreescritos en las subclases.
// creación de instancias de la superclase Vehiculo y // de las subclases Turismo, Deportivo y Furgoneta Vehiculo miVehiculo = new Vehiculo("4050 ABJ", "VW", "GTI", "Blanco", 100.0); Turismo miTurismo = new Turismo("4060 TUR", "Skoda", "Fabia", "Blanco", 90.0, 2, false); Deportivo miDeportivo = new Deportivo("4070 DEP", "Ford”, "Mustang", "Rojo", 150.0, 2000); Furgoneta miFurgoneta = new Furgoneta("4080 FUR", "Fiat", "Ducato", "Azul", 80.0, 1200, 8); // invocación del método getAtributos() de cada objeto System.out.print("Vehículo : " + miVehiculo.getAtributos()); // miVehiculo es una instancia de la clase Vehiculo, se // invoca el método getAtributos() de Vehiculo Vehículo : Matrícula: 4050 ABJ Modelo: VW GTI Color: Blanco Tarifa: 100.0 Disponible: false System.out.print("Turismo " + miTurismo.getAtributos()); // miTurismo es una instancia de la clase Turismo, se // invoca el método getAtributos() de Turismo Turismo Matrícula: 4060 TUR Modelo: Skoda Fabia Color: Blanco Tarifa: 90.0 Disponible: false Puertas: 2 Marcha automática: false System.out.print("Deportivo " + miDeportivo.getAtributos()); // miDeportivo es una instancia de la clase Deportivo, // se invoca el método getAtributos() de Deportivo Deportivo Matrícula: 4070 DEP Modelo: Ford Mustang Color: Rojo Tarifa: 150.0 Disponible: false Cilindrada (cm3): 2000 System.out.print("Furgoneta " + miFurgoneta.getAtributos()); // miFurgoneta es una instancia de la clase Furgoneta, // se invoca el método getAtributos() de Furgoneta Furgoneta Matrícula: 4080 FUR Modelo: Fiat Ducato Color: Azul Tarifa: 80.0 Disponible: false Carga (kg): 1200 Volumen (m3): 8 // el objeto miTurismo pertenece a la subclase Turismo, // es un vehículo y puede invocar a los métodos de la // superclase Vehiculo: getMatricula(), // getMarca() y getModelo() System.out.print("Turismo : " + miTurismo.getMatricula() + " " + miTurismo.getMarca() + " " + miTurismo.getModelo());
Turismo : 4060 TUR Skoda Fabia
Twittear

No hay comentarios:
Publicar un comentario