Interfazes y Herencia en Java
__________________________________________________________________
La Herencia es el mecanismo por el que se crean nuevos objetos definidos en términos de objetos ya existentes. Por ejemplo, si se tiene la clase Ave, se puede crear la subclase Pato, que es una especialización de Ave.
1 2 3 | class Pato extends Ave { int numero_de_patas; } |
La palabra clave extends se usa para generar una subclase (especialización) de un objeto. Una Pato es una subclase de Ave. Cualquier cosa que contenga la definición de Ave será copiada a la clase Pato, además, en Pato se pueden definir sus propios métodos y variables de instancia. Se dice que Pato deriva o hereda de Ave.
Además, se pueden sustituir los métodos proporcionados por la clase base. Utilizando nuestro anterior ejemplo de MiClase, aquí hay un ejemplo de una clase derivada sustituyendo a la función Suma_a_i():
1 2 3 4 5 6 | import MiClase; public class MiNuevaClase extends MiClase { public void Suma_a_i( int j ) { i = i + ( j/2 ); } } |
Ahora cuando se crea una instancia de MiNuevaClase, el valor de i también se inicializa a 10, pero la llamada al método Suma_a_i() produce un resultado diferente:
1 2 3 | MiNuevaClase mnc; mnc = new MiNuevaClase(); mnc.Suma_a_i( 10 ); |
En Java no se puede hacer herencia múltiple. Por ejemplo, de la clase aparato con motor y de la clase animal no se puede derivar nada, sería como obtener el objeto toro mecánico a partir de una máquina motorizada (aparato con motor) y un toro (aminal). En realidad, lo que se pretende es copiar los métodos, es decir, pasar la funcionalidad del toro de verdad al toro mecánico, con lo cual no sería necesaria la herencia múltiple sino simplemente la compartición de funcionalidad que se encuentra implementada en Java a través de interfaces.
INTERFAZ
__________________________________________________________________
• Una Interfaz es una especificación para las operaciones externas
visibles de una clase, componente, o otra entidad (incluyendo
unidades globales como los paquetes), pero siempre sin
especificar la estructura interna
• Cada interfaz especifica a menudo sólo una parte limitada del
comportamiento de una clase real
• Una interfaz no tiene implementación
• Una Interfaz es formalmente equivalente a una clase abstracta sin
atributos y sin métodos, con sólo operaciones abstractas
• Un interfaz se puede representar de dos formas:
– Circulo unido por una línea a una clase con las operaciones de
interfaz al lado del círculo
– Rectángulo con la palabra reservada <> y la sección de
operaciones
• Una clase que usa las operaciones de una interfaz se une por
medio de una flecha de línea discontinua a los círculos o al
rectángulo de la interfaz
• También se puede utilizar la “relación Realiza” desde una clase a
una interfaz que soporta
Un interface es parecido a una clase abstracta en Java, pero con las siguientes diferencias:
- Todo método es abstracto y público sin necesidad de declararlo. Por lo tanto un interface en Java no implementa ninguno de los métodos que declara.
- Las varibles del interface serán las variables miembro de la clase.
- Un interface se implementa (implements) no se extiende (extends) por sus subclases.
- Una clase puede implementar más de un interfaz en Java, pero sólo puede extender una clase. Es lo más parecido que tiene Java a la herencia múltiple, que de clases normales está prohibida.
- Podemos declarar variables del tipo de clase del interfaz, pero para inicializarlas tendremos que hacerlo de una clase que lo implemente.
Así, por ejemplo, podemos declarar el siguiente interfaz en Java:
1 2 3 | interface Figura{ int area(); } |
y una clase que lo implementa:
1 2 3 4 5 6 7 | public class Cuadrado implements Figura { int lado; public Cuadrado (int ladoParametro) { lado = ladoParametro; } public int area(){ return lado*lado; }} |
Más adelante podemos:
1 2 3 4 5 6 | public class PruebaInterfaz{ public static void main(String args[]){ Figura figura=new Cuadrado (5); //Podemos crear una referencia de interface(variable r) y que un objeto que pertenezca // a una clase que la implementa le sea asignada a la variable System.out.println(figura.area());} |
Saludos…
Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.
















