Herramientas de usuario

Herramientas del sitio


bloque4:interfaces

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:interfaces [04/03/2018 18:18] – [Declaración de interfaces] Fernando Valdeónbloque4:interfaces [05/03/2018 11:36] (actual) – borrado Fernando Valdeón
Línea 1: Línea 1:
-======Herencia: Interfaces====== 
-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**, y tampoco permiten ser instanciadas. 
  
-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 ''static final''. 
- 
-Otra de sus finalidades es permitir una herencia múltiple para una clase, ya que mediante el mecanismo de herencia simple (''extends'') solo se puede tener una superclase. 
- 
- 
-=====Declaración de interfaces ===== 
-  * Para crear una interface, usamos la palabra ''interface'' 
-  * Para indicar que una clase emplea una interface, usamos la palabra ''implements''. 
-  * Una clase puede implementar varias interfaces. 
-  * La interface puede definirse public o sin modificador de acceso/visibilidad, y tiene el mismo significado que para las clases.  
-  * Todos los métodos que define una interface son ''public'' aunque no se indique. 
-  * **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) 
-} 
- 
-//Declaración de interface VehiculoAereo 
-public interface VehiculoAereo{ 
-   void despegar(float alturaBase); 
-   void aterrizar(); 
-} 
-</code> 
- 
-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{ 
-   private int volumenGlobo; 
-   private int capacidadPasajeros; 
-   ...  
-   //Constructores, getters, setters 
- 
-   //Estoy obligado a implementar 
-   void despegar(float alturaBase){  
-      if(alturaBase > 500){ 
-         aumentarCombustible(); 
-         ... 
-      } 
-   } 
- 
-   //Estoy obligado a implementar 
-   void aterrizar(){  
-      reducirVelocidadVertical(); 
-      ... 
-   } 
- 
-   //Métodos propios de la clase 
-   void aumentarCombustible(){ 
- 
-      //implementación método 
-   } 
- 
-   void reducirVelocidadVertical(){ 
-      //implementación método 
-   } 
-} 
-</code> 
- 
-===== 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> 
-List<String> lista1 = new ArrayList<String>(); 
-List<String> lista2 = new Stack<String>(); 
- 
- 
-VehiculoAereo vehiculo1 = new Globo(); 
-VehiculoAereo vehiculo2 = new Avion(); 
-</code> 
- 
-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(); 
-</code> 
- 
-===== 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 ) ; 
-. . . 
-} 
-</code> 
bloque4/interfaces.1520187516.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)