bloque3:herencia
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:herencia [14/02/2023 02:28] – [Etiqueta @Override] Fernando Valdeón | bloque3:herencia [16/09/2024 20:53] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 13: | Línea 13: | ||
| Podríamos decir que la herencia nos permite usar el código creado en una clase para no tener que volverlo a escribir en una subclase. Todas las subclases tienen las operaciones de la superclase, y así no tenemos que repetir el código en cada una. | Podríamos decir que la herencia nos permite usar el código creado en una clase para no tener que volverlo a escribir en una subclase. Todas las subclases tienen las operaciones de la superclase, y así no tenemos que repetir el código en cada una. | ||
| + | |||
| + | Otro planteamiento seria, si me encuentro con la necesidad de tener dos clases cuyas operaciones (métodos) son iguales, pero que cada una tiene otras operaciones propias diferentes, debo concluir que esas dos clases tienen un parte en común, la cual debería definirse en una superclase, permitiendo a estas subclases implementar solo las operaciones específicas de cada una. | ||
| ===== Declaración de una Subclase ===== | ===== Declaración de una Subclase ===== | ||
| - | Si entendemos que una clase son “los planos” que definen la creación de un ejemplar (objeto, instancia) de esa clase, podemos entender que cuando una clase hereda de otra, lo que está haciendo es usar los planos de la clase padre, y añadirle más información para crear más o diferentes funcionalidades | + | Si entendemos que una clase son “los planos” que definen la creación de un ejemplar (objeto, instancia) de esa clase, podemos entender que cuando una clase hereda de otra, lo que está haciendo es usar los planos de la clase padre, y añadirle más información para crear más o diferentes funcionalidades |
| Podemos llamar a las clases hijas '' | Podemos llamar a las clases hijas '' | ||
| - | Para que una subclase herede de una superclase debe usarse '' | + | Para que una subclase herede de una superclase debe usarse '' |
| Ejemplo de superclase: '' | Ejemplo de superclase: '' | ||
| Línea 70: | Línea 72: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| {{: | {{: | ||
| + | |||
| Aquí vemos como aparecen los métodos heredados de la superclase Vehiculo: '' | Aquí vemos como aparecen los métodos heredados de la superclase Vehiculo: '' | ||
| Línea 97: | Línea 101: | ||
| Por ejemplo las clases '' | Por ejemplo las clases '' | ||
| ===== Constructor de la subclase ===== | ===== Constructor de la subclase ===== | ||
| - | **Los constructores no se heredan**. __Siempre que se crea una instancia de una subclase, se crea primero una instancia de la superclase__. Esta instanciación puede ser implícita, o explícita, o lo que es lo mismo, invisible o visible. | + | **Los constructores no se heredan**. __Siempre que se crea una instancia de una subclase, se crea primero una instancia de la superclase__. Esta instanciación puede ser implícita, o explícita, o lo que es lo mismo, invisible |
| En una clase se puede definir un constructor de forma explícita, o no definir ninguno. **Cuando no definimos un constructor, | En una clase se puede definir un constructor de forma explícita, o no definir ninguno. **Cuando no definimos un constructor, | ||
| Atendiendo a lo anterior, con los constructores de la subclase puede ocurrir 2 cosas: | Atendiendo a lo anterior, con los constructores de la subclase puede ocurrir 2 cosas: | ||
| - | * **La superclase tiene un constructor sin parámetros** (ya sea el que define Java de forma implícita, o uno definido por nosotros que no tiene parámetros). En este caso en la subclase podemos definir un constructor, | + | * **La superclase tiene un constructor sin parámetros** (ya sea el que define Java de forma implícita |
| * **La superclase no tiene un constructor sin parámetros** (o sea, se ha definido uno con parámetros). En este caso Java no puede llamar de forma implícita al constructor de la superclase, ya que necesita saber qué valor dar a sus parámetros. Entonces estamos obligados a crear también un constructor en la subclase, cuya primera instrucción es una llamada al constructor de la superclase. Esto se hace usando la instrucción '' | * **La superclase no tiene un constructor sin parámetros** (o sea, se ha definido uno con parámetros). En este caso Java no puede llamar de forma implícita al constructor de la superclase, ya que necesita saber qué valor dar a sus parámetros. Entonces estamos obligados a crear también un constructor en la subclase, cuya primera instrucción es una llamada al constructor de la superclase. Esto se hace usando la instrucción '' | ||
| ==== Palabra clave super ==== | ==== Palabra clave super ==== | ||
bloque3/herencia.1676341726.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)
