G.Bordel >Docencia >TAP Técnicas Actuales de Programación (curso 2010-2011)
desprotegido Intro. desprotegido Temario desprotegido Calendario desprotegido RPF desprotegido Recursos protegido Práctica protegido Gest. Alum.
tema_anterior Tema 4: Elementos relacionados con la orientación a objeto tema_siguiente
  1. Objetos y clases.
  2. Estructura de la definición de una clase.
  3. Herencia.
  4. Encapsulamiento (ámbitos de accesibilidad).
  5. El bloque static y los atributos static y final.
  6. Instanciación, inicialización y eliminación de objetos.[ejercicios]
  7. Clases y métodos abstractos.[ejercicios]
  8. Interfaces.[ejercicios]
  9. Polimorfismo.
  10. Arrays*.[ejercicios]
  11. Enumeraciones.

4.8- Interfaces

Palabras reservadas en Java
abstractbooleanbreakbytecasecatch
charclassconst*continuedefaultdo
doubleelseextendsfinalfinallyfloat
forgoto*ifimplementsimportinstanceof
intinterfacelongnativenewpackage
privateprotectedpublicreturnshortstatic
strictfp**superswitchsynchronizedthisthrow
throwstransienttryvoidvolatilewhile

Ya que acabamos de ver las clases abstractas, diremos que los interfaces pueden relacionarse en cierto modo con ellas. Una clase abstracta tendrá al menos un método abstracto y obliga por ello a sus clases descendientes a definirlo (en algún nivel de descendencia). Los interfaces implementan esta idea de obligación. Un interfaz contiene declaraciones de métodos abstractos únicamente, de modo que es lo que en ocasiones se entiende como un "contrato" que obliga a un cierto cumplimiento a las clases que lo implementan (las clases se "heredan", los interfaces se "implementan").

Los interfaces son la alternativa a la herencia múltiple de otros lenguajes orientados a objetos. Una clase en java puede presentar varios grupos de características por implementación más uno por herencia del mismo modo que en otros lenguajes pueden presentarse todos esos grupos de características por herencia.

La definición de interfaces se realiza de modo similar a la de clases sustituyendo la palabra reservada "class" por "interfaz" y declarando todos los métodos sin bloque de definición. En este caso no es necesario utilizar el atributo abstract en la declaración de los métodos. Sólo pueden declararse un tipo más de elementos en un interfaz: constantes, es decir campos con el atributo final. Un interfaz puede implementar a su vez otros de manera que puede llegar a ser la unión de varios y/o una ampliación de ellos. Esto hace que la relación establecida entre interfaces no se limite a un arbol, sino que sea un grafo de tipo jerarquía con herencia múltiple.


 1-
 2-
 3-
 4-


public interface Volador{
	public void despegue();
	public void aterrizaje();
}


 1-
 2-
 3-
 4-
 5-
 6-
 7-
 8-
 9-


public class Pajaro extends Animal implements Volador{
	public void despegue(){
		//definición del método
	}
	public void aterrizaje() {
		//definición del método
	}
	//definición del resto de la clase
}


La clase Pajaro hereda de Animal e implementa el interfaz Volador.

El ejemplo anterior nos muestra la definición de la clase "Pajaro" que presenta características de "Animal" por heredarlas de su clase padre y características de "Volador" al implementarlas por la obligación que le marca el interfaz.

Recordemos que al hablar de encapsulamiento mencionabamos que el "interfaz" de una clase u objeto era su parte visible externamente y que esto no debia confundirse con el elemento "interfaz" definible en Java aunque existia cierta relación. Podemos ahora aclarar esto. En realidad un interfaz implementado por una clase Java está declarando una parte de sus elementos visibles (y obligando a que existan), de modo que el interfaz de la clase, entendido como "su parte visible" será la unión de todos los interfaces que implemente más el interfaz de su clase padre.

Siguiente punto: 4.9- Polimorfismo


Plataforma de soporte a curso y contenidos (c) German Bordel 2005.