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

Duda Interfaces

Estas en el tema de Duda Interfaces en el foro de Java en Foros del Web. Alguna amable persona me podria ilustrar he leído todo el dia y no entiendo como se utiliza una interfaz, la verdad es que necesito entenderlas. ...
  #1 (permalink)  
Antiguo 21/06/2011, 15:06
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 3 meses
Puntos: 188
Duda Interfaces

Alguna amable persona me podria ilustrar he leído todo el dia y no entiendo como se utiliza una interfaz, la verdad es que necesito entenderlas.

Me explique un ejemplo de código que tengan por ahi guardado se los agradecería mucho.

un saludo
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #2 (permalink)  
Antiguo 21/06/2011, 15:24
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 13 años, 6 meses
Puntos: 17
Respuesta: Duda Interfaces

hola. se más explicito en ti pregunta que es lo buscar? a que te refieres? hacer que?
las interfaces de java contienen
contenedores
botones
texbox
textlist
etc.
  #3 (permalink)  
Antiguo 21/06/2011, 19:04
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 3 meses
Puntos: 188
Respuesta: Duda Interfaces

Hola amigo, que tal disculpa me olvidaba de Java WEb.


Yo hablo de java basico.

Por ejemplo interfaz definida con la palabra reservada interface e implementeada con implements,

El puro concepto no lo entiendo.

ya se que una interfaz es completamente abstracta y que los metodos de una interface deben ser solo declarados y no definidos, y que estos mismos metodos deben ser declarados nuevamente en cualquier clase que implemente ésta interfas solo que en estas clases los métodos deben definirse.

Hasta aqui todo bien, pero ¿Para que sirve? He leido 3 libros el tema de interface y no veo su utilidad o mas bien creo que no se usarlas. Me podrias ayudar con un ejemplo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #4 (permalink)  
Antiguo 21/06/2011, 19:14
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Duda Interfaces

Suponiendo que no hablas de Interfaces Gráficas:

Una interface es una clase que contiene sólo métodos abstractos y atributos que son static y final. Un ejemplo sencillo, supongamos que estás programando un videojuego, tiene varios vehículos, algunos de estos vuelan y otros se sumergen en el agua, pero todos se mueven y disparan, así que podríamos hacer esto:

Código Java:
Ver original
  1. interface Volador{
  2.     //Los atributos son final y static,
  3.     //pero no tienes que ponerlo,
  4.     //lo mismo con los métodos abstractos.
  5.    
  6.     int ALTURA_DE_VUELO = 20;
  7.    
  8.     void despegar();
  9.     void aterrizar();
  10.     }
  11.    
  12. interface Sumergible{
  13.    
  14.     int PROFUNDIDAD = -20;
  15.    
  16.     void sumergirse();
  17.     void emerger();
  18.     }

Ahora podríamos tener cuatro clases de las que se deriven todo tipo de vehículos:

Código Java:
Ver original
  1. class Vehiculo{
  2.  
  3.     void avanzar(){
  4.         //Definición  método Avanzar
  5.     }
  6.     void detenerse(){
  7.         //Definición  método Detenerse
  8.     }
  9. }  
  10.  
  11. class VehiculoQueVuela extends Vehiculo implements Volador{
  12.     void despegar(){
  13.         //Definición  método
  14.     }
  15.     void aterrizar(){
  16.         //Definición  método
  17.     }
  18. }
  19. class VehiculoQueSeSumerge extends Vehiculo implements Sumergible{
  20.     void sumergirse(){
  21.         //Definición  método
  22.     }
  23.     void emerger(){
  24.         //Definición  método
  25.     }
  26. }
  27. class VehiculoQueSeSumergeYVuela extends Vehiculo implements Sumergible, Volador{
  28.     void despegar(){
  29.         //Definición  método
  30.     }
  31.     void aterrizar(){
  32.         //Definición  método
  33.     }
  34.     void sumergirse(){
  35.         //Definición  método
  36.     }
  37.     void emerger(){
  38.         //Definición  método
  39.     }
  40. }
Con eso podríamos tener algo como esto:
Código Java:
Ver original
  1. VehiculoQueSeSumergeYVuela vehiculo = new VehiculoQueSeSumergeYVuela();
  2.  
  3. vehiculo.avanzar();
  4. vehiculo.despegar();
  5. vehiculo.aterrizar();
  6. vehiculo.sumergirse();
  7. vehiculo.emerger();

En resumen, las interfaces son clases puramente abstractas, y como tales no permiten la instanciación, una clase puede implementar varias interfaces y las interfaces se puede heredar de otras interfaces.

Cualquier duda me dices.

Saludos
__________________
Grupo Telegram Docker en Español

Última edición por Carlangueitor; 21/06/2011 a las 22:13
  #5 (permalink)  
Antiguo 21/06/2011, 19:47
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Duda Interfaces

Hola,

Muy buena explicación, solamente quisiera agregar algo, según la RAE:
Cita:
interfaz.
(Del ingl. interface, superficie de contacto).
1. f. Inform. Conexión física y funcional entre dos aparatos o sistemas independientes.
http://buscon.rae.es/draeI/SrvltGUIB...?LEMA=interfaz
De lo cual se puede concluir que sirve para unir dos componentes de alguna forma que sea genérica, solamente importando la compatibilidad, eso permite que se conecten varios componentes polimórficos (que pueden tener diferentes formas). Y creo que un ejemplo más específico podría ser:
Código Java:
Ver original
  1. public interface Animal {
  2. }
  3.  
  4. public class Perro implements Animal {
  5. }
  6.  
  7. public class Gato implements Animal {
  8. }
  9.  
  10. public class Jaula {
  11.   public void enjaular(Animal animalito) {
  12.   }
  13. }
  14.  
  15. Jaula jaula = new Jaula();
  16. jaula.enjaular(new Perro); // Enjaulé un perro.
  17. jaula.enjaular(new Gato); // Enjaulé un gato en la misma jaula,
  18. // posiblemente a la par del perro, dependiendo de la implementación de enjaular.
Si ves en el ejemplo, yo puedo enjaular un animal en una jaula, valga la redundancia, sin importar si es un perro o un gato puesto que los dos son animales, sino existieran las interfaces tendría que duplicar la funcionalidad, una para enjaular perros y otra para enjaular gatos.

Aunque algunas veces se confunde el concepto de las clases abstractas y las interfaces puesto que ofrecen una funcionalidad parecida. A mi en lo personal me gusta pensar en una interfaz como un contrato o certificado, si el Perro está certificado como Animal puede ser usado y aceptado en cualquier lugar donde se acepte o permita el certificado de Animal.

Saludos,
  #6 (permalink)  
Antiguo 21/06/2011, 21:01
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 3 meses
Puntos: 188
Respuesta: Duda Interfaces

Amigos me ha quedado claro el concepto gracias a ustedes se los agradesco +1karma para los 2.

Muchas gracias nuevamente. Les mando un saludo.
Éxitos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: interfaces
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 10:13.