Foros del Web » Programación para mayores de 30 ;) » Java »

Consulta Interface

Estas en el tema de Consulta Interface en el foro de Java en Foros del Web. Hola a tod@s, he visto en alguna ocasión códigos en Java que hacen lo siguiente, pero francamente, no se para qué sirve o qué ventajas ...
  #1 (permalink)  
Antiguo 03/11/2011, 10:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Consulta Interface

Hola a tod@s,
he visto en alguna ocasión códigos en Java que hacen lo siguiente, pero francamente, no se para qué sirve o qué ventajas pueden aportarte.

Intentaré ser breve:

Se crean:
- ClaseA
- InterfaceA

Entonces:
ClaseA implementa InterfaceA

Y luego....
Desde Clase123 se instancia ClaseA de la siguiente manera:
private InterfaceA obj = new ClaseA();


Mi pregunta:
No es mejor no crear la InterfaceA e instanciar directamente desde Clase123:
private ClaseA obj = new ClaseA();

Que ventajas podemos encontrar haciéndolo con una interface?

Muchas gracias a todos.

Un saludo!

Athlit
  #2 (permalink)  
Antiguo 03/11/2011, 11:26
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Consulta Interface

Hombre, si ClaseA es la única que implementa esa interfaz, pues sí, es una chorrada.

Pero si yo quiero que haya una ClaseB que tenga solo determinados métodos comunes con ClaseA pero que no herede de ella, ¿qué harías?¿Y si quieres métodos comunes con dos clases?

Es importante entender el polimorfismo

http://javabasico.osmosislatina.com/...limorfismo.htm
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 03/11/2011, 11:56
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Consulta Interface

@Xerelo
Emular herencia multiple por medio de intefaces es muuuuuuy poco común, y no tiene el mismo efecto ya que no hay @Overrite a nivel herencia de clase (sinó una implementación de algo vacio).

@ElAthlit
Tu ejemplo es muy vano para entender algo tan complejo y útil, pero podés fijate en Controller, Listeners (implementación completa o anónimas), Adapters (implemantación parcial) Classes (muy usado en MVC).
Una vez que empieces a modelar un par, le vas a ir agarrando el gusto
__________________
BadProgrammerException!
  #4 (permalink)  
Antiguo 03/11/2011, 13:50
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Consulta Interface

Gracias a ambos por vuestro tiempo.

Pongamos el siguiente ejemplo:

Interface1 objA = new ClaseA();
Interface1 objB = new ClaseB();


Si luego voy a trabajar con los objetos objA y objB, que diferencia hay en haberlo hecho así:

ClaseA objA = new ClaseA();
ClaseB objB = new ClaseB();



En ambos casos trabajare con estos objetos de la misma forma, o me equivoco?

Agradezco vuestra explicación de antemano, pues es algo que no acabo de entender.

Gracias a quien me lo pueda explicar o lo intente.

Un saludo!

Athlit
  #5 (permalink)  
Antiguo 03/11/2011, 13:54
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Consulta Interface

Pensé que hablando de interfaces ya quedaba claro que al solo declarar métodos, con métodos comunes me refería a que comparten existencia de métodos, no a su implementación.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 03/11/2011, 14:14
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Consulta Interface

ElAthlit, por poner un ejemplo sencillo de utilidad (hay mucho más que esto).

Clase Perro
Clase Persona
Clase Delfin

Perro y Persona corren(), Persona y Delfin nadan().

Crea un array para meter solo perros y personas, y otro para solo delfines y personas.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 04/11/2011, 03:37
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Consulta Interface

Muchas gracias Xerelo.

Ayer por la noche estuve probando una posible utilidad de las intercaces, el polimorfismo. (Otro concepto que tenía en cola para aprender).

Aunque normalmente he leido sobre el polimorfismo heredando clases, ayer realicé la siguiente prueba:

Interface:
Código Java:
Ver original
  1. public interface Instrumento {
  2.     public void Toca();
  3. }

Clase:
Código JAVA:
Ver original
  1. public class Guitarra implements Instrumento{
  2.     public void Toca(){
  3.         System.out.println("Guitara taraan..!!");
  4.     }
  5. }

Clase:
Código JAVA:
Ver original
  1. public class Piano implements Instrumento{
  2.     public void Toca(){
  3.         System.out.println("Piano Pin Pin ");
  4.     }
  5. }

Clase Main:
Código JAVA:
Ver original
  1. public class TocanInstrumentos {
  2.  
  3.     public TocanInstrumentos(Instrumento instru){
  4.         instru.Toca();
  5.     }
  6.    
  7.     public static void main (String arg[]){
  8.         Piano piano = new Piano();
  9.         TocanInstrumentos tocan = new TocanInstrumentos(piano);
  10.     }
  11. }

Me ayudó a entender las interfaces y según veo, llevé a cabo el polimorfismo con una interface. ¿Es correcto?

Gracias y un saludo.
  #8 (permalink)  
Antiguo 04/11/2011, 10:58
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Consulta Interface

si ElAthlit .. básicamente así viene la mano

Cita:
Iniciado por Xerelo Ver Mensaje
Crea un array para meter solo perros y personas, y otro para solo delfines y personas.
Una pequeña corrección, porque en estos temas hay que ser meticulosos:
La consigna quedaría mejor expresada así:

Crea un array (prefiero Collections) de "quienes pueden correr" y otro de " quienes pueden nadar".
__________________
BadProgrammerException!
  #9 (permalink)  
Antiguo 04/11/2011, 11:09
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Consulta Interface

Muchas gracias FiruzzZ!

Etiquetas: interface
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.