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

Metodos INTERFACES JAVA!

Estas en el tema de Metodos INTERFACES JAVA! en el foro de Java en Foros del Web. Buenos días. Quería saber cómo se puede acceder desde una clase a un método de una clase implementa a otra tercera clase. Es decir algo ...
  #1 (permalink)  
Antiguo 27/12/2011, 06:41
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Metodos INTERFACES JAVA!

Buenos días.
Quería saber cómo se puede acceder desde una clase a un método de una clase implementa a otra tercera clase.
Es decir algo así:


CLASE 1:
class Jaula{
.
.
.
}


CLASE 2/ INTRFAZ: ¨
public interface Animal {

public void come(){
}
}

CLASE 3
class Perro implements Animal {

public void come(){
System.out.println("come");
}
public void ladra(){
System.out.println("ladra");
}
}

LA PREGUNTA ES LA SIGUIENTE:
Tengo en la clase Jaula un array con objetos Animal. Lo que quiero hacer es acceder al método LADRA() desde el objeto Animal que está en un array en Jaula.
Gracias de antemano!
  #2 (permalink)  
Antiguo 28/12/2011, 03:56
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Metodos INTERFACES JAVA!

Pues la única manera es convertir la referencia del objeto de la clase Animal a una referencia de la clase Perro, porque desde una referencia de la clase Animal, sólo puedes acceder a los métodos que se definen en esa interfaz.

Para realizar la conversión de manera segura puedes usar el operador instanceof para asegurarte que la referencia al objeto este apuntando a un objeto de tipo Animal

Un ejemplo:

Código Java:
Ver original
  1. Animal animal= new Perro();
  2.  
  3. animal.ladra(); //Daría fallo de compilación, pues ladra no es un método de la interfaz Animal
  4.  
  5. if (animalinstanceof Perro){
  6.  
  7. Perro perro = (Perro)animal;
  8. perro.ladra();
  9. }

Etiquetas: clase, interfaces, metodos
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 16:16.