Las interfaces en Java

21/06/2005 - 06:58 por sabrina | Informe spam
En este link
http://64.233.179.104/search?q=cache:U-56e-Dr6WcJ:mami.uclm.es/jbravo/docencia/componentes/Presentaciones_0405/Interfaces.pdf+%22la+clase+KeyAdapter%22+%2B+%22java%22&hl=es

indican que "Una variable de referencia de tipo interfaz sólo tiene
conocimiento de los métodos que hay en la declaración de la interfaz"
y para lo cual dan el siguiente ejemplo :

interface Saludo {void diHola();}
class C1 implements Saludo {public void diHola() {System.out.println("Hola,
Mundo!");}}
class C2 implements Saludo {public void diHola() {System.out.println("Hello,
World!");}}

class Prueba {
public static void main (String [] args)
{Saludo s = new C1();
s.diHola();
C2 cdos = new C2();
s = cdoss.diHola();
}
}
Resultado Hola, Mundo!
Hello, World!

Sinceramente,no entiendo que es lo que quieren demostrar con la clase "
Prueba" de este ejemplo.
¿alguien fuera tan amable de explicarme esto?

Sabrina

Preguntas similare

Leer las respuestas

#6 sabrina
22/06/2005 - 18:57 | Informe spam
Polimorfismo, es entonces la capacidad de una clase de responder de distinta
manera ante un mismo metodo :-))

.
"Luis Miguel Cisneros León" escribió en el mensaje
news:OiKZh%
Muy Bien :-).

Imaginate un Empleado y un Supervisor. Ellos pueden heredar de una clase
abstracta llamada humano (métodos como camina, comer, respirar, etc). pero
también pueden implementar una interfaz llamada Trabajador, que tiene el
método trabajar (imaginemos un robot que haga lo mismo, osea, también
trabaje). Ahora, no importa lo que tengas, imaginate una colección con
1000 trabajadores, no sabes de que tipo, lo que te importan es que
trabajen

Ves el poder?

Saludos
Luis Cisneros

'sabrina wrote:
Luis:
Gracias por tu molestia de atender mi duda.Vemos si te entendi bien.
En el ejemplo, estas usando un Array de Interface para crear distintas
"referencias a objetos " que apuntan a distintas clases . Obviamente
estas clases tienen implementadas (implements) la misma Interface. De
esta forma podemos llamar a los MISMOS METODOS de las distintas clases
que haran "funciones distintas" dependiendo de como cada clase haya
sobreescrito dichos metodos.
Entendi bien ?
Sabrina

.
"Luis Miguel Cisneros León" escribió en el
mensaje news:

como dije el polimorfismo es piedra angular de cualquier lenguaje
orientado a objeto, asi que es muuuuy importante dominarlo.

imagina que tienes un Array con 100 cosas que vuelan

Object[] varios = new Object[100];

varios[0] = new Ave();
varios[1] = new Ave();
varios[2] = new Ave();
varios[3] = new Ave();
varios[4] = new Avion();
varios[5] = new Avion();
varios[6] = new Ave();
varios[7] = new Avion();
varios[8] = new Ave();

etc

y tu quieres hacerlos volar, solo eso...


for(int i = 0; i< varios.length; i++) {
if (varios[i] intanceof Ave) {
((Ave)varios[i]).volar();
}
else if(varios[i] intanceof Avion) {
((Avion)varios[i]).volar()
}
else {
System.out.println("esto no vuela");
}

}

veamos como queda con el uso de la interfas volador:


Volador[] voladores= new Volador[100];

voladores[0] = new Ave();
voladores[1] = new Ave();
voladores[2] = new Ave();
voladores[3] = new Ave();
voladores[4] = new Avion();
voladores[5] = new Avion();
voladores[6] = new Ave();
voladores[7] = new Avion();
voladores[8] = new Ave();

etc

y tu quieres hacerlos volar, solo eso...


for(int i = 0; i< voladores.length; i++) {
voladores[i].volar();
}


espero que este ejemplo te ayude a entender el poder el uso de
interfaces...

Luis Miguel

'sabrina wrote:


Hola Luis :
Entiendo que todas las clases que implementan una interfaz debe
sobreescribir los metodos vacios de la interfaz para darles la utilidad
mas conveniente. Pero volviendo al ejemplo que me das (esto del
polimorfismo me cuesta entender su utilidad) te expreso lo siguiente:
No veo la diferencia entre crear una clase Avion y otra Ave, en la cual
, a cada una de ellas les ponga los metodos volar() y despegar()
y escribiendo en cada uno de ellos lo necesario segun se trate de Avion
o Ave , de esta forma (observa que no uso Implements):

class Avion {
public void volar() { System.out.println("el avion vuela"); }
public void despegar() {System.out.println("el avion enciende los
motores y despega"); }
}
class Ave {
public void volar() {System.out.println("el ave planea y aletea
pocas veces"); }
public void despegar() {System.out.println("el ave aletea y despega
"); }
}

Luego

public class Prueba {
public static void main(String a[]) {
Ave ave = new Ave();
Avion avion = new Avion();
ave.volar();
avion.volar();
ave.despegar();
avion.despegar();
}
}

Como veras, puedo usar los metodos volar() y despegar() de igual forma,
es decir sin tener que usar ninguna Interfaz, es por ello que no logro
entender cual es la utilidad o ventaja concreta de utilzar Interfaces .
Espero haberme dejado entender en donde esta mi duda con respecto al
polimorfismo y en consecuencia a las interfaces.
Disculpa Luis si estoy abusando de tu tiempo, pero creo que entender
estos puntos es importante para entender Java.

Sabrina,






MindArs C.A. Luis Miguel Cisneros León
Consultor / Instructor
División de Consultoría en Java™
MindArs C.A.

Av. Francisco de Miranda, Centro Profesional Miranda
Piso 4, Oficina 4-D, Chacao, Caracas - 1060
Distrito Capital - Venezuela

Teléfonos: +58-212-2646581 / 4168586
Celular: +58-414-3015074
E-Mail: <mailto:
Web Site: http://www.mindars.com <http://www.mindars.com>

*Aviso Legal: *
Este mensaje es privado y confidencial, y está dirigido exclusivamente a
su(s) destinatario(s). Si usted ha recibido este mensaje por error, debe
abstenerse de distribuirlo, copiarlo o usarlo en cualquier sentido.
Asimismo, le agradecemos comunicarlo al remitente y borrar el mensaje y
cualquier documento adjunto.









MindArs C.A. Luis Miguel Cisneros León
Consultor / Instructor
División de Consultoría en Java™
MindArs C.A.

Av. Francisco de Miranda, Centro Profesional Miranda
Piso 4, Oficina 4-D, Chacao, Caracas - 1060
Distrito Capital - Venezuela

Teléfonos: +58-212-2646581 / 4168586
Celular: +58-414-3015074
E-Mail: <mailto:
Web Site: http://www.mindars.com <http://www.mindars.com>

*Aviso Legal: *
Este mensaje es privado y confidencial, y está dirigido exclusivamente a
su(s) destinatario(s). Si usted ha recibido este mensaje por error, debe
abstenerse de distribuirlo, copiarlo o usarlo en cualquier sentido.
Asimismo, le agradecemos comunicarlo al remitente y borrar el mensaje y
cualquier documento adjunto.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida