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)