bloque3:polimorfismo
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| bloque3:polimorfismo [21/03/2018 15:56] – [Concepto de polimorfismo] Fernando Valdeón | bloque3:polimorfismo [16/09/2024 20:53] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Herencia: Polimorfismo ====== | ====== Herencia: Polimorfismo ====== | ||
| - | El **polimorfismo** es otro de los pilares de la programación orientada a objetos, junto al **encapsulamiento, | + | El **polimorfismo** es otro de los pilares de la programación orientada a objetos, junto al **encapsulamiento, |
| - | Básicamente consiste en acceder a una subclase mediante un tipo de datos de su superclase. | + | Básicamente consiste en acceder a métodos de una subclase mediante un tipo de datos de su superclase. |
| ===== Concepto de polimorfismo ===== | ===== Concepto de polimorfismo ===== | ||
| Viene del término de biología en el que un organismo puede tener diferentes formas. En programación orientada a objetos podemos tener aparentemente un mismo objeto que se comporta de formas distintas. | Viene del término de biología en el que un organismo puede tener diferentes formas. En programación orientada a objetos podemos tener aparentemente un mismo objeto que se comporta de formas distintas. | ||
| - | Para explicar esto vamos a crear 3 clases: Vehiculo, Coche y Moto | + | De una forma resumida se puede decir que consiste en realizar un casting entre objetos: __una variable de una superclase puede almacenar referencias de objetos de sus subclases__. Podemos usar una variable de una superclase para acceder desde ella a métodos sobrescritos en la subclase. |
| + | |||
| + | Para explicar esto vamos a crear 3 clases: Vehiculo | ||
| <code java> | <code java> | ||
| public Class Vehiculo{ | public Class Vehiculo{ | ||
| Línea 14: | Línea 16: | ||
| | | ||
| ... | ... | ||
| - | | ||
| - | this.numRuedas = numRuedas; | ||
| - | this.potencia = potencia; | ||
| - | this.matricula = matricula; | ||
| - | } | ||
| | | ||
| Línea 35: | Línea 32: | ||
| public class Coche extends Vehiculo{ | public class Coche extends Vehiculo{ | ||
| | | ||
| - | + | ... | |
| - | | + | |
| - | super(matricula, | + | |
| - | this.numPuertas = numPuertas; | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | } | + | |
| - | + | ||
| | | ||
| | | ||
| Línea 55: | Línea 45: | ||
| public class Moto extends Vehiculo{ | public class Moto extends Vehiculo{ | ||
| | | ||
| - | + | ... | |
| - | | + | |
| - | super(matricula, | + | |
| - | this.marca = marca; | + | |
| - | } | + | |
| - | + | ||
| - | | + | |
| - | return marca; | + | |
| - | } | + | |
| | | ||
| Línea 89: | Línea 71: | ||
| //Ejecuto el mismo método para los 3 vehiculos | //Ejecuto el mismo método para los 3 vehiculos | ||
| //El mismo método actúa de forma distinta | //El mismo método actúa de forma distinta | ||
| - | vehiculo1.mostrarEspecificaciones(); | + | vehiculo1.mostrarEspecificaciones(); |
| - | vehiculo1.mostrarEspecificaciones(); | + | vehiculo2.mostrarEspecificaciones(); |
| - | vehiculo1.mostrarEspecificaciones(); | + | vehiculo3.mostrarEspecificaciones(); |
| Línea 101: | Línea 83: | ||
| </ | </ | ||
| - | Se puede llamar al método '' | + | Se puede llamar al método '' |
| - | Sin embargo si desde una variable de la superclase '' | + | Sin embargo, si desde una variable de la superclase '' |
| Tampoco se permite almacenar un objeto de la superclase en una variable de una subclase: | Tampoco se permite almacenar un objeto de la superclase en una variable de una subclase: | ||
bloque3/polimorfismo.1521647792.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)
