Herramientas de usuario

Herramientas del sitio


bloque4: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
bloque4:claseabstracta [04/03/2018 18:52] Fernando Valdeónbloque4:claseabstracta [05/03/2018 11:36] (actual) – borrado Fernando Valdeón
Línea 1: Línea 1:
-====== Herencia: Clases Abstractas ====== 
-Si queremos que una clase no pueda ser instanciada hemos visto que basta con definir sus constructores como ''private'', de forma que nunca podrán ser invocados. Esto es lo que ocurre con el constructor de la clase ''Math''. 
  
-Existen otro tipo de clases que no se pueden instanciar ni tampoco acceder a sus métodos: estas son las **clases abstractas**.  
- 
-===== Definición de Clase Abstracta ===== 
-Una clase abstracta se crea únicamente para ser heredada por otras clases, y no se permite instanciar.  
- 
-Se usa para unificar propiedades y operaciones de las subclases, pero sin impidiendo crear instancias de la superclase. 
- 
-**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 para todos los tipos de vehículos, elementos que sí nos interesaría crear, y tendrían un mayor sentido propio. Todos los vehículos pueden realizar, por ejemplo, las operaciones **moverse, acelerar o parar**, pero probablemente cada uno lo haga de distinta forma.// 
- 
-===== Cacacterísticas =====  
-  * 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. 
-  * 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. 
- 
-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. 
- 
- 
-===== Declarar un Método Abstracto ===== 
-Es un método que nunca va a poder ser ejecutado, ya que no tiene código (implementación). La subclase está obligado a sobrescribirlo si se quiere ser ejecutado. Se define como ''abstract'' : 
- 
-<code java> 
-[modificador] abstract tipoDevuelto nombreMetodo([parametros]); 
- 
-public abstract boolean arrancar(); 
-</code> 
- 
-===== Declarar una Clase Abstracta ===== 
-Para declarar una clase como abstracta se usa la palabra clase ''abstract'' : 
- 
-<code java> 
-public abstract class Vehiculo{ 
-   //atributos 
-    
-   //métodos, abstractos y concretos 
-   public abstract boolean arrancar(); 
-    
-   public abstract void acelerar(int intensidad); 
-    
-   public abstract void frenar(int intensidad); 
-} 
-</code> 
- 
- 
-===== Variables de Referencia ===== 
-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: 
- 
-<code java> 
-Vehiculo miVehiculo; 
- 
-miVehiculo = new Vehiculo() -> Error: no se puede 
- 
-//Pero la puedo usar para contener objetos de subclases 
- 
-miVehiculo = new Coche(); 
-miVehiculo.arrancar(); 
- 
-</code> 
- 
-** El uso de clases abstractas está completamente ligado al concepto y uso del __polimorfismo__** 
- 
----- 
- 
-(c) {{date> %Y}} Fernando Valdeón 
bloque4/claseabstracta.1520189553.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)