G.Bordel >Docencia >TAP | Técnicas Actuales de Programación | (curso 2010-2011) | |||||||
|
|||||||||
tema_anterior | Tema 4: Elementos relacionados con la orientación a objeto | tema_siguiente |
4.8- Interfaces
Palabras reservadas en Java | |||||
abstract | boolean | break | byte | case | catch |
char | class | const* | continue | default | do |
double | else | extends | final | finally | float |
for | goto* | if | implements | import | instanceof |
int | interface | long | native | new | package |
private | protected | public | return | short | static |
strictfp** | super | switch | synchronized | this | throw |
throws | transient | try | void | volatile | while |
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.
|
|
![]() 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. |