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)