bloque4:interfaces
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previa | |||
bloque4:interfaces [04/03/2018 18:21] – [Herencia de interfaces] Fernando Valdeón | bloque4:interfaces [05/03/2018 11:36] (actual) – borrado Fernando Valdeón | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ======Herencia: | ||
- | El concepto de interface lleva mas lejos la idea de clase abstracta. Se conoce a las interfaces como //clases abstractas puras//, **ya que todos sus métodos son abstractos**, | ||
- | Es decir, en una interface, no existe ninguna implementación un método, solo su declaración o definición. | ||
- | |||
- | Las interfaces sirven establecer la //forma// de una clase, diseñando qué métodos deben tener, parámetros de los métodos y valores de retorno, pero sin definir su funcionamiento. | ||
- | |||
- | Una interface también puede tener atributos, pero siempre serán '' | ||
- | |||
- | Otra de sus finalidades es permitir una herencia múltiple para una clase, ya que mediante el mecanismo de herencia simple ('' | ||
- | |||
- | |||
- | =====Declaración de interfaces ===== | ||
- | * Para crear una interface, usamos la palabra '' | ||
- | * Para indicar que una clase emplea una interface, usamos la palabra '' | ||
- | * Una clase puede implementar varias interfaces. | ||
- | * La interface puede definirse public o sin modificador de acceso/ | ||
- | * Todos los métodos que define una interface son '' | ||
- | * **Una clase que implementa una interface está obligada a implementar todos sus métodos**. | ||
- | |||
- | <code java> | ||
- | [Modificadores] interface nombre_interface { | ||
- | //cuerpo de la interface (declaración de métodos o atributos) | ||
- | } | ||
- | |||
- | // | ||
- | public interface VehiculoAereo{ | ||
- | void despegar(float alturaBase); | ||
- | void aterrizar(); | ||
- | } | ||
- | </ | ||
- | |||
- | La interface VehiculoAereo se aplica a cualquier clase que quiera ser Vehiculo Aereo. Para poder ser un vehiculo aereo está obligada a tener los métodos despegar() y aterrizar(). | ||
- | |||
- | He creado la clase Globo que hereda de la clase Vehiculo, y quiero que implemente la interface VehiculoAereo: | ||
- | |||
- | <code java> | ||
- | public class Globo extends Vehiculo implements VehiculoAereo{ | ||
- | | ||
- | | ||
- | | ||
- | // | ||
- | |||
- | // | ||
- | void despegar(float alturaBase){ | ||
- | if(alturaBase > 500){ | ||
- | | ||
- | ... | ||
- | } | ||
- | } | ||
- | |||
- | // | ||
- | void aterrizar(){ | ||
- | reducirVelocidadVertical(); | ||
- | ... | ||
- | } | ||
- | |||
- | // | ||
- | void aumentarCombustible(){ | ||
- | |||
- | // | ||
- | } | ||
- | |||
- | void reducirVelocidadVertical(){ | ||
- | // | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Variables de referencia de interfaces ===== | ||
- | Es posible crear variables de referencia de tipo interface, pero no puedo de ningún modo crear objetos de tipo interface: no permiten ser instanciadas. | ||
- | |||
- | <code java> | ||
- | //Interface List de Java | ||
- | List< | ||
- | List< | ||
- | |||
- | //Interface VehiculoAereo | ||
- | VehiculoAereo vehiculo1 = new Globo(); | ||
- | VehiculoAereo vehiculo2 = new Avion(); | ||
- | </ | ||
- | |||
- | Además permiten un polimorfismo múltiple dado que una clase puede implementar múltiples interfaces: | ||
- | |||
- | Cuando una clase implementa una interface, está obligada a implementar todos los métodos definidos en esa interface, y si implementa varias interfaces, ocurre lo mismo: | ||
- | |||
- | <code java> | ||
- | VehiculoAereo vehiculo1 = new Globo(); | ||
- | VehiculoAereo vehiculo2 = new Avion(); | ||
- | |||
- | VehiculoConMotor vehiculo3 = new Globo(); | ||
- | VehiculoConMotor vehiculo4 = new Avion(); | ||
- | </ | ||
- | |||
- | ===== Herencia de interfaces ===== | ||
- | Una interface también permite heredar de otra interface, **solo de una**, mediante el mecanismo de la herencia simple: | ||
- | <code java> | ||
- | public interface nombre_interface extends nombre_interface{ | ||
- | |||
- | tipo_retorno nombre_metodo(lista_argumentos ) ; | ||
- | . . . | ||
- | } | ||
- | </ | ||
- | |||
- | ---- | ||
- | |||
- | (c) {{date> %Y}} Fernando Valdeón |
bloque4/interfaces.1520187719.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)