bloque4:claseabstracta
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| bloque4:claseabstracta [04/03/2018 18:52] – Fernando Valdeón | bloque4: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 '' | ||
| - | 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: | ||
| - | |||
| - | ===== Cacacterísticas ===== | ||
| - | * Una clase que tiene un '' | ||
| - | * Un '' | ||
| - | * 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 '' | ||
| - | |||
| - | <code java> | ||
| - | [modificador] abstract tipoDevuelto nombreMetodo([parametros]); | ||
| - | |||
| - | public abstract boolean arrancar(); | ||
| - | </ | ||
| - | |||
| - | ===== Declarar una Clase Abstracta ===== | ||
| - | Para declarar una clase como abstracta se usa la palabra clase '' | ||
| - | |||
| - | <code java> | ||
| - | public abstract class Vehiculo{ | ||
| - | // | ||
| - | |||
| - | // | ||
| - | | ||
| - | |||
| - | | ||
| - | |||
| - | | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== 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(); | ||
| - | |||
| - | </ | ||
| - | |||
| - | ** 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)
