Herramientas de usuario

Herramientas del sitio


bloque3:claseabstracta

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque3:claseabstracta [30/09/2020 14:22] – editor externo 127.0.0.1bloque3:claseabstracta [16/09/2024 20:53] (actual) – editor externo 127.0.0.1
Línea 7: Línea 7:
 Una clase abstracta se crea únicamente para ser heredada por otras clases, y no se permite instanciar.  Una clase abstracta se crea únicamente para ser heredada por otras clases, y no se permite instanciar. 
  
-Además permite definir ''métodos abstractos''. De este modo una clase abstracta ofrece una implementación parcial de la clase, obligando a que sus subclases terminen de definir la implementación completa.+Ademáspermite definir ''métodos abstractos''. De este modo una clase abstracta ofrece una implementación parcial de la clase, obligando a que sus subclases terminen de definir la implementación completa.
  
 **Ejemplo:** //Podemos tener un tipo que representa Vehículos, tienen unas propiedades comunes, y que engloba a muchos subtipos como Coche, Moto, Bicicleta, Barco, Tren, Avión, etc. Tener un elemento de tipo vehículo puede ser demasiado general y no tener mucho sentido propio. Sin embargo, puede definir una serie de operaciones que queremos asegurar que pueden realizar todos los tipos de vehículos, elementos que sí nos interesaría instanciar, y tendrían un mayor sentido propio. Todos los vehículos pueden realizar ciertas operaciones del mismo modo y además podemos asegurarnos de que cada uno define otras operaciones de forma específica: **moverse, acelerar o parar**, ya que cada uno lo hace de distinta forma.// **Ejemplo:** //Podemos tener un tipo que representa Vehículos, tienen unas propiedades comunes, y que engloba a muchos subtipos como Coche, Moto, Bicicleta, Barco, Tren, Avión, etc. Tener un elemento de tipo vehículo puede ser demasiado general y no tener mucho sentido propio. Sin embargo, puede definir una serie de operaciones que queremos asegurar que pueden realizar todos los tipos de vehículos, elementos que sí nos interesaría instanciar, y tendrían un mayor sentido propio. Todos los vehículos pueden realizar ciertas operaciones del mismo modo y además podemos asegurarnos de que cada uno define otras operaciones de forma específica: **moverse, acelerar o parar**, ya que cada uno lo hace de distinta forma.//
Línea 13: Línea 13:
 ===== Características =====  ===== Características ===== 
   * Una clase que tiene un ''método abstracto'', es obligatoriamente una ''clase abstracta''.   * Una clase que tiene un ''método abstracto'', es obligatoriamente una ''clase abstracta''.
-  * Un ''método abstracto'' es un método que está declarado, pero no implementado. Solo tiene su nombre, parámetros, retorno y modificadores.+  * Un ''método abstracto'' es un método que está declarado, pero no implementado. Solo tiene su nombre, parámetros, retorno y modificadores. (Pero no tiene código en su cuerpo)
   * Una clase abtracta puede tener métodos implementados (no abstractos, sino concretos), __incluso puede no tener ningún método abstracto__.   * Una clase abtracta puede tener métodos implementados (no abstractos, sino concretos), __incluso puede no tener ningún método abstracto__.
-  * Una clase que hereda de una clase abstracta está obligada a implementar todos los métodos abstractos. Si no lo hace, ese método será abstracto, y la clase será también abstracta.+  * Una clase que hereda de una clase abstracta está obligada a implementar todos los métodos abstractos. Si no lo hace, esos métodos seguirán siendo abstractos, y la clase será también abstracta.
  
 En resumen, una clase abstracta solo se usa para ser heredada, tenga métodos abstractos o no. Un clase que tiene al menos un método abstracto, debe ser definida como abstracta. En resumen, una clase abstracta solo se usa para ser heredada, tenga métodos abstractos o no. Un clase que tiene al menos un método abstracto, debe ser definida como abstracta.
Línea 48: Línea 48:
  
 ===== Variables de Referencia ===== ===== Variables de Referencia =====
-Crear una clase abstracta tiene como finalidad acceder polimórficamente a objetos de sus subclases.+Crear una clase abstracta tiene como finalidad acceder **polimórficamente** a objetos de sus subclases: Puedo crear una variable del tipo de una clase Abstracta, pero nunca podré crear un objeto de una clase abstracta
  
-Puedo crear una variable del tipo de una clase Abstractapero nunca podré crear un objeto de una clase abstracta:+Es decir, las variables del tipo de una clase abstractasolo podrán almacenar objetos de las subclases concretas (no abstractas) de esa clase abstracta de la que heredan.
  
 <code java> <code java>
Línea 63: Línea 63:
 </code> </code>
  
-** El uso de clases abstractas está completamente ligado al concepto y uso del __polimorfismo__**+En base a este último apartado podemos concluir que **el uso de clases abstractas está completamente ligado al concepto y uso del __polimorfismo__**
  
 ---- ----
  
 (c) {{date> %Y}} Fernando Valdeón (c) {{date> %Y}} Fernando Valdeón
bloque3/claseabstracta.1601475727.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)